0

Я использую OpenID Connect для подключения к Azure ID, я могу успешно пройти аутентификацию в Azure и получить запрос, возвращающийся к перенаправлению uri, указанному в конфигурации OpenID Azure AD.Azure AD callback не собирается аутентифицировать метод ExternalAsync

app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { AuthenticationType = " TEST", Caption = "Test Azure AD", SignInAsAuthenticationType = signInAsType, ClientId = "<client ID>", Authority = "https://sts.windows.net/<tenantId>", ResponseType = OpenIdConnectResponseTypes.CodeIdToken, RedirectUri = "https://localhost:44392/External/Login", This is another webapi project, not identityserver host. AuthenticationMode = AuthenticationMode.Passive, });

После успешной аутентификации он перенаправляет обратно https://localhost:44392/External/Login с кодом, IdToken.

Вопросы:

  1. ли не остановятся AuthenticateExternalAsync метода на перенаправлении в отличие от google-signin?

  2. Должен ли я декодировать IdToken JWT, чтобы получить претензии пользователя?

  3. В методе перенаправления, как я могу создать Access Token из IdSrv3 для авторизации других webapis?
  4. Может ли пользователь иметь как локальный вход, так и несколько внешних входов (Azure AD, Google и т. Д.). В этом случае, как SSO работает с IDsrv3?

  5. Есть ли IdSrv3 образец с внешними входами? Предпочтительно Azure AD?

ответ

1

Я только что преодолел этот процесс, поэтому я попытаюсь ответить как можно лучше, чтобы помочь вам/другим. Простите меня, если я неправильно понимаю ваш вопрос.

  1. AuthenticateExternalAsync следует назвать, но вы должны иметь AzureAd возвращение к IDS (идентификатор сервера), а не к вашему App. Ваш поток должен выглядеть примерно так: app -> IDS -> AzureAd -> IDS (AuthenticateExternalAsync) -> Приложение.

  2. В AuthenticateExternalAsync вы получаете ExternalAuthenticationContext.ExternalIdentity, в котором содержатся претензии - нет необходимости декодировать токен JWT.

  3. IDS обрабатывает этот раз вы возвращаетесь успешную AuthenticatedResult в AuthenticateExternalAsync, что-то вроде context.AuthenticateResult = new AuthenticateResult("UserId", name, claims);

  4. Да. Вы можете принудительно ввести метод входа в систему как described для целей единого входа, иначе я предполагаю, что IDS будет обрабатывать его после первого входа.

  5. Я нашел this полезный (работает через установку IDS и AzureAd), но он использует старый Azure Portal, а не новый. Кажется, у них нет образцов в их gallery.

Надежда, что помогает немного :)

 Смежные вопросы

  • Нет связанных вопросов^_^