ja używam OpenID Connect
aby połączyć się z identyfikatorem Azure, mogę pomyślnie uwierzytelnić się na platformie Azure i otrzymać żądanie powrotu do identyfikatora URI przekierowania określonego w konfiguracji 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,
});
Po udanym uwierzytelnieniu następuje przekierowanie z powrotem do https://localhost:44392/External/Login
z kodem, IdToken.
Pytania :
To się nie kończy
AuthenticateExternalAsync
metoda przekierowania w przeciwieństwie dogoogle-signin
?Czy muszę dekodować
IdToken
JWT, aby uzyskać roszczenia użytkowników?- W metodzie przekierowania, jak wygenerować
Access Token
z IdSrv3, aby autoryzować inne webapi? Czy użytkownik może mieć zarówno login lokalny, jak i wiele loginów zewnętrznych (Azure AD, Google itp.). W takim przypadku jak działa logowanie jednokrotne
IDsrv3
?Czy jest jakiś
IdSrv3
próbka z zaimplementowanymi loginami zewnętrznymi? Wolisz Azure AD?
Odpowiedzi:
1 dla odpowiedzi № 1Właśnie zmagałem się z tym procesem, więc postaram się odpowiedzieć najlepiej jak potrafię, aby pomóc tobie / innym. Wybacz mi, jeśli źle zrozumiem twoje pytanie.
AuthenticateExternalAsync
powinien zostać wywołany, ale musisz mieć AzureAdwróć do IDS (serwer tożsamości) zamiast do aplikacji. Twój przepływ powinien wyglądać mniej więcej tak: aplikacja -> IDS -> AzureAd -> IDS (AuthenticateExternalAsync) -> Aplikacja.W
AuthenticateExternalAsync
dostajeszExternalAuthenticationContext.ExternalIdentity
, który zawiera oświadczenia - nie trzeba dekodować tokenu JWT.IDS zajmuje się tym po zwróceniu pomyślnego
AuthenticatedResult
wAuthenticateExternalAsync
, coś jakcontext.AuthenticateResult = new AuthenticateResult("UserId", name, claims);
Tak. Możesz wymusić metodę logowania jako opisane do celów logowania jednokrotnego, inaczej wyobrażam sobie, że IDS poradziłoby sobie z tym po pierwszym logowaniu.
znalazłem to pomocny (uruchamia się przez konfigurację IDS i AzureAd), ale używa starego Azure Portal, a nie nowego. Wydaje się, że nie mają w nich żadnych próbek Galeria.
Mam nadzieję, że to trochę pomoże :)