azure-ad-b2c - .NET Core 2.1 Azure AD B2C Web 和 API
问题描述
使用VS 2017 15.7.2+
.
因此,我创建了一个兼具两者的解决方案,但我试图从 Web 应用程序获取访问令牌并使用它来调用 API,但我找不到方法。
我尝试了选项 1(不起作用):
private async Task<string> GetAccessTokenCacheAsync()
{
string authority = $"{AzureAdOptions.Instance}{AzureAdOptions.ClientId}/{AzureAdOptions.SignUpSignInPolicyId}/";
string clientId = AzureAdOptions.ClientId;
Uri redirectUri = new Uri("https://localhost:12345/");
string resource = targetApplicationID;
AuthenticationContext ac = new AuthenticationContext(authority);
AuthenticationResult result = null;
try
{
result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently
|| adalException.ErrorCode == AdalError.InteractionRequired)
{
result = await ac.AcquireTokenAsync(resource, clientId, redirectUri,
new PlatformParameters()); //PromptBehavior.Auto
}
}
return result.AccessToken;
}
我得到了:
System.NotImplementedException: 'The method or operation is not implemented.'
我尝试了选项 2(不起作用),MSAL(Microsoft.Identity.Client):
private async Task<string> GetAccessTokenCacheAsync() {
string authority = $"{AzureAdOptions.Instance}{AzureAdOptions.ClientId}/{AzureAdOptions.SignUpSignInPolicyId}/";
PublicClientApplication myApp = new PublicClientApplication(AzureAdOptions.ClientId, authority);
AuthenticationResult authenticationResult = await myApp.AcquireTokenAsync(
new[] { $"{ApiScopeUrl}/read", $"{ApiScopeUrl}/write" }
,
myApp.Users.FirstOrDefault()
,
UIBehavior.ForceLogin
,null,null
,authority
).ConfigureAwait(false);
return authenticationResult.AccessToken;
}
我得到了:
System.NotImplementedException: 'The method or operation is not implemented.'
我还尝试改编 Azure 示例中的代码,例如https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi(框架 4.5.1)或https://github。 com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore(Core 2.0 和 OpenID,无 B2C)并失败。
这个https://github.com/Azure-Samples/active-directory-b2c-dotnetcore-webapp也提到了实现OnAuthorizationCodeReceived
,但 Core 2.1 似乎用AddAzureADB2C
(黑盒)实现了这个。这个新库的文档似乎丢失或正在进行中,因为我找不到它。
我想知道,如何使用 .NET Core 2.1 中的内置功能获取访问令牌?
我相信如果我知道如何实施OnAuthorizationCodeReceived
,我会更接近找到答案。这里我创建的代码源和票证与此相关:https ://github.com/aspnet/AADIntegration/issues/21
解决方案
推荐阅读
- ckeditor - 使用CDN时如何将插件添加到ckeditor5
- python - 如何计算 Turtle 在屏幕上的位置
- excel - 需要 7zip 具有特定名称的文件
- wordpress - WordPress 重定向恶意软件 white.belonnanotservice
- excel - Excel VBA 不会替换 HTML 电子邮件正文中的 SharePoint 链接
- reactjs - Console.log 使用反应 - 它返回语法错误:意外的令牌,预期的“...”
- javascript - 如何通过反应处理以编程方式修改的输入中的撤消/重做?
- python - PySide2 中的 QGraphicsItem.itemClipsChildrenToShape 问题
- angular - 以角度将视频添加到 dist 文件夹中的资产
- postgresql - Postgres在块中执行多个语句