ASP. NET MVC с использованием библиотеки ADAL для ADFS 2016 - Как запросить токены доступа для различных API (аудиторий) - PullRequest
0 голосов
/ 08 марта 2020

Следующий код ниже используется для аутентификации пользователей в ADFS 2016 и для запроса токена доступа для ресурса, определенного в cp.APIBaseURL:

public partial class Startup
    {
        public void ConfigureAuth(IAppBuilder app)
        {
            var cp = UnityConfig.Container.Resolve<IConfigurationProvider>();
            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = cp.ClientId,
                    MetadataAddress = cp.MetadataAddress,
                    RedirectUri = cp.RedirectUri,
                    PostLogoutRedirectUri = cp.PostLogoutRedirectUri,
                    ResponseType = "code id_token",
                    Scope = "openid",
                    Notifications = new OpenIdConnectAuthenticationNotifications()
                    {
                        AuthorizationCodeReceived = OnAuthorizationCodeReceived 
                    }
                });


 private async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedNotification context)
        {
            var cp = UnityConfig.Container.Resolve<IConfigurationProvider>();

            AuthenticationContext ac = new AuthenticationContext(
                configurationProvider.Authority, false,
                new InMemoryTokenCache(context.AuthenticationTicket.Identity.Name));

            AuthenticationResult ar = await ac.AcquireTokenByAuthorizationCodeAsync(
                context.Code, new Uri(cp.RedirectUri),
                new ClientCredential(cp.ClientId, cp.ClientSecretKey),
                cp.APIBaseURL);
        }

Я хотел бы знать, как изменить код на запросить 2-й токен доступа для другого API (с другой аудиторией)?

Могу ли я также указать разные области действия для 2-го токена доступа, который мне нужен?

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете использовать result = await ac.AcquireTokenSilentAsync(resource, clientId);, чтобы запросить токен доступа для разных ресурсов. Для получения более подробной информации см. здесь .

Могу ли я также указать разные области действия для необходимого мне 2-го токена доступа?

Нет, для v1 (adal ) Azure Приложения AD, области должны быть статически настроены на портале Azure в соответствии с разрешениями API , настроенными разрешениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...