我可以从Blazor客户端的AuthenticationStateProvider访问我的ID令牌吗?
我正在尝试访问Azure AD提供的ID令牌。我确实需要访问签名和所有声明 我可以轻松访问AuthenticationStateProvider,然后从中获取用户。User属性中包含所有声明,但似乎仅此而已。我不知道如何访问ID令牌的其余部分 以下是我在blazor页面的代码隐藏中使用的代码:我可以从Blazor客户端的AuthenticationStateProvider访问我的ID令牌吗?,authentication,blazor,msal,Authentication,Blazor,Msal,我正在尝试访问Azure AD提供的ID令牌。我确实需要访问签名和所有声明 我可以轻松访问AuthenticationStateProvider,然后从中获取用户。User属性中包含所有声明,但似乎仅此而已。我不知道如何访问ID令牌的其余部分 以下是我在blazor页面的代码隐藏中使用的代码: [Inject] AuthenticationStateProvider authenticationState { get; set; } public async Task<string>
[Inject]
AuthenticationStateProvider authenticationState { get; set; }
public async Task<string> GetIDTokenAsync()
{
var authState = await authenticationState.GetAuthenticationStateAsync();
return string.Join(", ", authState.User.Claims.ToList());
}
[注入]
AuthenticationStateProvider authenticationState{get;set;}
公共异步任务GetIDTokenAsync()
{
var authState=await authenticationState.getAuthenticationStateAncy();
返回字符串.Join(“,”,authState.User.Claims.ToList());
}
我只是将列表作为字符串返回,以查看得到的数据
此外,我的引导程序如下所示:
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
});
await builder.Build().RunAsync();
}
}
公共类程序
{
公共静态异步任务主(字符串[]args)
{
var builder=WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add(“应用程序”);
addScope(sp=>newHttpClient{BaseAddress=newURI(builder.HostenEnvironment.BaseAddress)});
builder.Services.AddMsalAuthentication(选项=>
{
builder.Configuration.Bind(“AzureAd”,options.ProviderOptions.Authentication);
});
等待builder.Build().RunAsync();
}
}
打开网站后,我使用RemoteAuthenticatorView组件登录。我需要在登录后访问ID令牌。另外,我只想澄清,我不是在寻找访问令牌。我不要求任何作用域,因此没有访问令牌。我的目标是获取ID令牌并将其传递给我的API,在这里API可以验证ID令牌,然后发布它自己的访问令牌