Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以从Blazor客户端的AuthenticationStateProvider访问我的ID令牌吗?_Authentication_Blazor_Msal - Fatal编程技术网

我可以从Blazor客户端的AuthenticationStateProvider访问我的ID令牌吗?

我可以从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>

我正在尝试访问Azure AD提供的ID令牌。我确实需要访问签名和所有声明

我可以轻松访问AuthenticationStateProvider,然后从中获取用户。User属性中包含所有声明,但似乎仅此而已。我不知道如何访问ID令牌的其余部分

以下是我在blazor页面的代码隐藏中使用的代码:

[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令牌,然后发布它自己的访问令牌