В приглашении на согласие не запрашиваются все разрешения, установленные в приложении AD после перехода к полномочиям версии 2.0 - PullRequest
0 голосов
/ 25 апреля 2020

У нас есть мультитенантное приложение AD, которое мы используем для входа пользователей в наше приложение с использованием OpenID Connect. Недавно мы перешли на конечную точку полномочий версии 2.0, после чего мы столкнулись с проблемой, в которой в запросе на согласие, отображаемом в процессе входа в систему, отображаются не все разрешения, настроенные в разделе «Разрешения» приложения. Это не похоже на поведение конечной точки полномочий v1.0, которая показывала приглашение для всех установленных разрешений. Ниже приведен фрагмент кода из нашего файла Startup.cs -

.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
            {
                options.CallbackPath = new PathString("/callback/");
                options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.SaveTokens = true;
                options.ClientId = <clientId>;
                options.Authority = "https://login.microsoftonline.com/common/v2.0/";
                options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer = <valid-issuer>,
                    IssuerValidator = MultiTenantIssuerValidator.Validate,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    ValidAudience = <client-id>,
                    NameClaimType = "preferred_username"
                };

URI перенаправления с конечной точкой версии 2.0 - https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=&redirect_uri=&response_type=code id_token & scope = профиль openid & response_mode = form_post

Перенаправление Uri с конечной точкой v1.0 - https://login.microsoftonline.com/common/oauth2/authorize?client_id=&redirect_uri=&response_type=code id_token & scope = профиль openid & response_mode = form_post

Я попытался go с помощью документации для конечной точки v2 и не нашел ни одного раздела, объясняющего это изменение поведения.

Должны ли мы явно устанавливать все необходимые области в OpenIdConnectOptions?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Да. Поведение между версиями 1.0 и 2.0 различно.

Для конечной точки версии 2.0 следует включить ресурс в область.

Например, если вы имеете разрешение Microsoft Graph, Вы должны сгенерировать запрос uri следующим образом:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=&redirect_uri=&response_type=code id_token&scope=openid profile https//graph.microsoft.com/.default&response_mode=form_post

Если ваше разрешение для вашего пользовательского веб-API, вам просто нужно заменить https//graph.microsoft.com/.default на api://*****/.default.

Тогда он будет просим вас дать согласие на все разрешения.

См. пример v2.0 Запросите код авторизации для получения подробной информации.

0 голосов
/ 26 апреля 2020

В Azure AD V2.0 разрешения (области) должны запрашиваться явным образом. У него есть параметр scope, который разработчик должен использовать для запроса областей. Это также означает, что приложению не нужно объявлять разрешения при регистрации приложения.

, если требуется поведение AAD v1.

  1. Объявите разрешения, необходимые приложению, в разрешения API blade.
  2. Используйте ключевое слово '. / Default ' в качестве области действия.

Более подробная информация приведена здесь

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