Правильная обработка добавочного согласия для Azure AD Open ID Connect - PullRequest
0 голосов
/ 03 октября 2019

У меня есть приложение, которое зарегистрировано в Azure AD. Я хочу использовать добавочное согласие, чтобы пользователям не приходилось соглашаться на все разрешения заранее. Я попытался использовать класс ConfidentialClientApplication для генерации URL. Это работает нормально, но после этого пользователь перенаправляется обратно на /signin-oidc. Это нормально, поскольку я могу предоставить URL-адрес в начальном перенаправлении, чтобы вернуть пользователя туда, где он должен быть.

Проблема заключается в том, что конечная точка /signin-oidc выдает ошибку, указывающую, что идентификатор корреляции не найден,Я предполагаю, что он ищет это значение в куки. Я начал с пути создания файла cookie, но мне он показался хрупким (что если библиотека OIDC изменит способ создания файла cookie в будущей версии). Я чувствую, что должен иметь возможность вернуть определенный IActionResult (или что-то подобное), чтобы сообщить промежуточному программному обеспечению OIDC о том, что приложению требуются дополнительные разрешения от пользователя (и промежуточное программное обеспечение OIDC выдаст перенаправление и правильно обработает результат из AzureНашей эры).

Я иду по неверному пути? Я не нашел хороших примеров в Интернете.

1 Ответ

0 голосов
/ 04 октября 2019

Я наконец нашел хороший пример. Краткий ответ - вернуть ChallengeResult. Используйте перегрузку (либо метод, если в Controller, либо конструктор, если где-либо еще), который принимает объект AuthenticationProperties.

Наиболее важной частью является использование SetParameter с ключом "scope" и значением, котороесписок областей, которые вам нужны.

В этом примере автор обернул логику в атрибут: https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/Microsoft.Identity.Web/AuthorizeForScopesAttribute.cs

...