Blazor WebAssembly Автономный доступ к нескольким API, защищенным AAD - PullRequest
0 голосов
/ 19 марта 2020

Мне удалось заставить шаблон по умолчанию работать (мой автономный SPA-сервер Blazor должен получать токены для нескольких областей действия из разных ADApps - webAPI; мне удалось получить токен только для одной области в то время, даже если Я определил дополнительные области или значения по умолчанию).

builder.Services.AddMsalAuthentication(options =>
{
    var config = options.ProviderOptions;
    config.Authentication.Authority = "https://login.microsoftonline.com/tenantID";
    config.Authentication.ClientId = "clientID";
    options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
    options.ProviderOptions.DefaultAccessTokenScopes.Add("https://graph.microsoft.com/user.read");
    options.ProviderOptions.DefaultAccessTokenScopes.Add("https://tenant.crm.dynamics.com/user_impersonation");
    options.ProviderOptions.DefaultAccessTokenScopes.Add("clientID/scope1");
    // tried this too
    // config.AdditionalScopesToConsent.Add("https://tenant.crm.dynamics.com/user_impersonation");
});

Теперь возникает вопрос о том, как получить другие токены, потому что он получает токен только для области видимости clientID, если упоминается несколько областей ...? и использовать эти токены со страницы wasm в запросе HttpClient?

В angular (с MSAL) все это делается автоматически, вы определяете нужные области и получаете все токены. Затем он перехватывает все запросы и добавляет заголовок авторизации и соответствующий токен по домену запроса.

Есть ли здесь подобный механизм или это нужно сделать вручную, добавив соответствующий токен для каждого запроса и используя HttpRequestMessage с HttpClient.SendAsyn c ()?

Очевидно, что для бизнес-приложений мало пользы без обращения к какому-либо защищенному API, который обычно является приложением в том же AAD. Например, скажем, это может быть простой запрос к веб-интерфейсу Dynamics CRM.

...