/ Wywołanie zwrotne / Azure AD nie będzie korzystało z metody AuthenticateExternalAsync - c #, logowanie do Google, serwer tożsamości3, openid-connect, azure-active-directory

Wywołanie zwrotne usługi Azure AD nie ma zastosowania do metody AuthenticateExternalAsync - c #, google-signin, identityserver3, openid-connect, azure-active-directory

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 :

  1. To się nie kończy AuthenticateExternalAsync metoda przekierowania w przeciwieństwie do google-signin ?

  2. Czy muszę dekodować IdToken JWT, aby uzyskać roszczenia użytkowników?

  3. W metodzie przekierowania, jak wygenerować Access Token z IdSrv3, aby autoryzować inne webapi?
  4. 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 ?

  5. Czy jest jakiś IdSrv3 próbka z zaimplementowanymi loginami zewnętrznymi? Wolisz Azure AD?

Odpowiedzi:

1 dla odpowiedzi № 1

Wł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.

  1. 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.

  2. W AuthenticateExternalAsync dostajesz ExternalAuthenticationContext.ExternalIdentity, który zawiera oświadczenia - nie trzeba dekodować tokenu JWT.

  3. IDS zajmuje się tym po zwróceniu pomyślnego AuthenticatedResult w AuthenticateExternalAsync, coś jak context.AuthenticateResult = new AuthenticateResult("UserId", name, claims);

  4. 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.

  5. 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 :)