【发布时间】:2021-12-20 22:02:41
【问题描述】:
使用 Windows 身份平台作为授权创建默认 Blazor 服务器(不是 webassembly)应用程序(我使用过 VS2022 / .net 6)。
是否可以在 blazor 组件(例如 LoginDisplay)的代码部分中获取 JWT 令牌?
例如 - 我可以从身份验证状态中获取声明,如下所示(对于我在 LoginDisplay.razor 中的示例)
@code
{
[CascadingParameter] private Task<AuthenticationState> authenticationStateTask { get; set; }
protected override async Task OnInitializedAsync()
{
var authState = await authenticationStateTask;
var user = authState.User;
var identity = user.Identity as ClaimsIdentity;
if (identity != null)
{
IEnumerable<Claim> claims = identity.Claims;
// Can I get the a JWT Token signed by Azure B2C here?
}
}
}
我还可以从 Azure 服务获取 JWT 令牌吗(我不想重新生成自己的 - 我想要一个由微软签名的原始令牌)。
作为澄清 - 在不同的项目(用于单页应用程序)上使用 MSAL javascript 库时,我可以调用诸如 MSAL.acquireTokenSilent 来从 Azure B2C 服务获取令牌。
更新 - 如果 HttpContext.GetTokenAsync 返回 null
另外enets在下面回答。如果您发现无法使用 HttpContext.GetTokenAsync 访问 JWT 令牌,请查看此question
【问题讨论】:
标签: jwt blazor azure-ad-b2c openid-connect blazor-server-side