[英]Server side Blazor get bearer token
使用 .net 核心 3.1.4,我创建了一个使用 Azure 活动目录身份验证的服务器端 blazor 应用程序。 我正在使用以下 json 值指向我的 azure 活动目录。
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "contoso.onmicrosoft.com",
"TenantId": "e86c78e2-8bb4-4c41-aefd-918e0565a45e",
"ClientId": "41451fa7-82d9-4673-8fa5-69eff5a761fd",
}
}
一切正常意味着我可以使用我的 Azure AD 凭据登录,但在 httpcontext 的请求标头中,我没有获得用于进一步调用我的其他 api 的不记名访问令牌。 在这种情况下,如何获取登录用户的不记名访问令牌?
谢谢,杰
您可以在ConfigureServices
中注册您的 OIDC 中间件并将SaveTokens
设置为 true:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.SaveTokens = true;
});
并参考此代码示例: https://stackoverflow.com/a/59901672/5751404将令牌保存到本地存储以供以后使用。
在默认模板中,您只能通过以下方式获取 id 令牌:
var id_token = await HttpContext.GetTokenAsync("id_token");
由于您只执行response_type
为id_token
的 OpenID Connect 登录过程,如果您想获取访问令牌以访问另一个 web api,您可以使用Code Flow ,您可以使用代码在OnAuthorizationCodeReceived
事件中获取访问令牌。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.