я використовую 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.
Питання:
Це не зупиняється на
AuthenticateExternalAsync
метод на перенаправлення на відміну відgoogle-signin
?Чи повинен я декодувати
IdToken
JWT для отримання претензій користувачів?- У методі перенаправлення, як я генерувати
Access Token
від IdSrv3 для авторизації інших webapis? Чи може користувач мати локальний вхід і декілька зовнішніх входів (Azure AD, Google тощо). У цьому випадку, як працює SSO
IDsrv3
?Чи є
IdSrv3
зразок із зовнішніми логінами реалізовано? Переважно Azure AD?
Відповіді:
1 для відповіді № 1Я просто боровся через цей процес, тому я спробую відповісти якнайкраще, щоб допомогти вам / іншим. Пробачте мене, якщо я зрозумію ваше запитання.
AuthenticateExternalAsync
повинна бути викликана, але ви повинні мати AzureAdповерніться до IDS (ідентифікаційного сервера), а не до програми. Ваш потік повинен виглядати приблизно так: app -> IDS -> AzureAd -> IDS (AuthenticateExternalAsync) -> Додаток.В
AuthenticateExternalAsync
ти отримуєшExternalAuthenticationContext.ExternalIdentity
, який містить формулу винаходу - не потрібно декодувати маркер JWT.IDS обробляє це після того, як ви повернете успішний
AuthenticatedResult
вAuthenticateExternalAsync
, щось на зразокcontext.AuthenticateResult = new AuthenticateResult("UserId", name, claims);
Так. Ви можете примусити метод входу як описаний для цілей SSO, в іншому випадку я думаю, IDS буде обробляти його після першого логіна.
я знайшов це корисно (проходить через налаштування IDS і AzureAd), але він використовує старий портал Azure, а не новий. Вони, здається, не мають ніяких зразків у своїх галерея.
Сподіваюся, що це трохи допомагає :)