/ / Azure AD зворотного виклику не збирається метод AuthenticateExternalAsync - c #, google-signin, identityserver3, openid-connect, azure-active-directory

Зворотний виклик Azure AD не збирається використовувати метод AuthenticateExternalAsync - c #, google-signin, identityserver3, openid-connect, azure-active-каталог

я використовую OpenID Connect Щоб підключитися до Azure ID, я можу успішно перевірити автентичність у Azure і повернути запит до перенаправлення uri, зазначеного в конфігурації OpenID Azure AD.

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

Я просто боровся через цей процес, тому я спробую відповісти якнайкраще, щоб допомогти вам / іншим. Пробачте мене, якщо я зрозумію ваше запитання.

  1. AuthenticateExternalAsync повинна бути викликана, але ви повинні мати AzureAdповерніться до IDS (ідентифікаційного сервера), а не до програми. Ваш потік повинен виглядати приблизно так: app -> IDS -> AzureAd -> IDS (AuthenticateExternalAsync) -> Додаток.

  2. В AuthenticateExternalAsync ти отримуєш ExternalAuthenticationContext.ExternalIdentity, який містить формулу винаходу - не потрібно декодувати маркер JWT.

  3. IDS обробляє це після того, як ви повернете успішний AuthenticatedResult в AuthenticateExternalAsync, щось на зразок context.AuthenticateResult = new AuthenticateResult("UserId", name, claims);

  4. Так. Ви можете примусити метод входу як описаний для цілей SSO, в іншому випадку я думаю, IDS буде обробляти його після першого логіна.

  5. я знайшов це корисно (проходить через налаштування IDS і AzureAd), але він використовує старий портал Azure, а не новий. Вони, здається, не мають ніяких зразків у своїх галерея.

Сподіваюся, що це трохи допомагає :)