ADFS 2016 OpenId Connect, одно основное веб-приложение asp.net, несколько ресурсов API - PullRequest
1 голос
/ 04 октября 2019

Я создал основное веб-приложение asp.net, которому требуется доступ к нескольким API. Предполагается, что аутентификация происходит через ADFS. Я могу настроить аутентификацию OpenId Connect и получить access_token для одного ресурса API. Как я могу получить access_tokens для оставшихся API, чтобы я мог вызвать их или один access_token с несколькими аудиториями?

Обычно я должен добавлять области, но кажется, что ADFS имеет другое значение для областей, чем IdentityServer, и вместо этого используетОпция «Ресурс».

        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = "oidc";
        })
        .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddOpenIdConnect("oidc", options =>
        {
            options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.Authority = appSettings.Authority;
            options.ClientId = appSettings.ClientId;
            options.ClientSecret = appSettings.ClientSecret;
            options.SaveTokens = true;

            foreach (var scope in appSettings.Scopes)
            {
                options.Scope.Add(scope);
            }

            options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
            options.RequireHttpsMetadata = true;
            options.Resource = appSettings.TemplateServiceIdentifier;
        });

Тогда я могу, при необходимости, просто позвонить

    var token = await _httpContextAccessor.HttpContext.GetTokenAsync(OpenIdConnectParameterNames.AccessToken);

, затем добавить токен в качестве носителя и проверить его в порядке. И это прекрасно работает для каждого отдельного ресурса (API), если я добавлю его с самого начала. Однако я не могу получить токены доступа для более чем одного ресурса одновременно.

Возможно ли это даже с ADFS? Должен ли я получить один токен доступа для всех ресурсов API (поскольку поставщик удостоверений одинаков для всех API) для нескольких аудиторий?

...