Могу ли я получить доступ к своему идентификатору с помощью AuthenticationStateProvider в моем клиенте Blazor? - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь получить доступ к идентификатору, предоставленному Azure AD. Мне действительно нужно получить доступ к подписи и всем утверждениям.

Я могу легко получить доступ к 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());
}

I ' m просто возвращает список в виде строки, чтобы увидеть, какие данные я получаю.

Кроме того, мой bootstrap выглядит так:

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();
    }
}

После открытия веб-сайта я вхожу в систему с помощью компонента RemoteAuthenticatorView. Мне нужно получить доступ к ID-токену после входа в систему. Также я просто хочу уточнить, что я не ищу токен доступа. Я не запрашиваю никаких объемов, и поэтому токена доступа нет. Моя цель здесь - получить токен ID и передать его моему API, где API может проверить токен ID, а затем выдать собственный токен доступа.

...