/ / OpenIDConnect, aby połączyć się z usługą Azure AD - c #, asp.net-web-api2, tożsamościserver3, openid-connect, azure-active-directory

OpenIDConnect to Connect to Azure AD - c #, asp.net-web-api2, identityserver3, openid-connect, azure-active-directory

Używam OWIN OpenID Connect Middleware dopołączyć się z usługą Azure AD. Jestem w stanie pomyślnie uwierzytelnić użytkownika i przekierować z powrotem do punktu końcowego oddzwaniania. Jestem trochę zdezorientowany, ponieważ otrzymuję tylko id_token & code w odpowiedzi.

    app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "Azure AD - TEST",
Caption = "azure AD",
SignInAsAuthenticationType = signInAsType,
ClientId = "some guid",
Authority = "https://sts.windows.net/idp",
ResponseType = OpenIdConnectResponseTypes.CodeIdToken,
RedirectUri = "https://localhost:44392/ExternalLogins/Callback/",
AuthenticationMode = AuthenticationMode.Active,
});

Metoda oddzwaniania:

[HttpPost]
[Route("ExternalLogins/Callback")]
[AllowAnonymous]
public async Task<IHttpActionResult> ExternalLoginCallback()
{
var content = await Request.Content.ReadAsStringAsync();
// I could see the content is a string with id_token, code , state etc.

//id_token is a JWT, so i can decode it and see the user claims and use them later
}

Moje pytania to:

  1. Czy usługa Azure AD służy tylko do uwierzytelniania użytkownika? Co z autoryzacją?
  2. Jeśli chcę nawiązywać połączenia z innymi interfejsami API po uwierzytelnieniu, jak to zrobić, ponieważ nie mam access_token ?
  3. Myślę, że mogę wymienić code z access_token ale nie jestem pewien, który punkt końcowy platformy Azure muszę zadzwonić, aby uzyskać access_token ?
  4. Jaka jest różnica pomiędzy AuthenticationMode.Active i AuthenticationMode.Passive ?

Odpowiedzi:

0 dla odpowiedzi № 1
  1. Usługa Azure AD może absolutnie autoryzować użytkownika i uzyskać tokeny dostępu / odświeżania. Obsługuje wszystkie przepływy oAuth 2.0 i OIDC.
  2. Musisz zdobyć access token nawiązywać połączenia z interfejsem API. Powiedzmy, że chcesz wywołać punkt końcowy / get na MS Graph, będziesz go wypełniał access token w treści żądania http ze słowem kluczowym Bearer ey... Przed tym. Ponadto musisz przejść do portalu Azure i skonfigurować delegowane uprawnienia, do których chcesz uzyskać dostęp.
  3. Kod autoryzacyjny służy do wymiany na token_dostępu. Proponuję sprawdzić ten protokół doc pokazuje, jak korzystać ze wszystkich punktów końcowych. Krótka odpowiedź brzmi: POST do punktu końcowego / token.
  4. Różnica między aktywną a pasywną jest nieco złożona dla odpowiedzi SO, polecam lekturę ten wpis na blogu o różnicach.

Dodam tylko, że jeśli chcesz zobaczyć przykładowy kod za pomocą usługi Azure AD, możesz przejść do Przewodnik po usłudze Azure AD Dev lub Przykłady kodu usługi Azure AD na Github.