Я пытаюсь получить доступ к идентификатору, предоставленному 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, а затем выдать собственный токен доступа.