web-dev-qa-db-fra.com

Identityserver 4 et Azure AD

Je cherche à utiliser Identity Server 4 pour l'authentification dans une application MVC basée sur C #. J'aimerais utiliser des comptes stockés dans Azure AD comme source d'utilisateurs valides, mais la documentation ne semble faire référence qu'à Google et OpenID et ne mentionne Azure qu'en passant.

Quelqu'un connaît-il une bonne documentation et/ou des didacticiels sur la façon d'utiliser Azure AD dans le contexte de son utilisation avec Identity Server 4?

24
PatrickA

Vous pouvez utiliser la connexion à Azure AD à partir d'IdentityServer comme vous le feriez pour la connexion à IdentityServer, par exemple. une application Javascript ou MVC.

Je l'ai fait récemment, et tout ce que vous devez faire est d'enregistrer les options OpenIdConnect dans Azure Ad comme ceci:

public void ConfigureAuth(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());

    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            ClientId = clientId,
            Authority = authority,
            PostLogoutRedirectUri = postLogoutRedirectUri,
        });
}

Plus d'informations à ce sujet ici: https://docs.Microsoft.com/en-us/Azure/active-directory/develop/active-directory-devquickstarts-webapp-dotnet

Vous devez ensuite dans votre action de connexion appeler la méthode ChallengeAsync:

var authenticationProperties = new AuthenticationProperties { RedirectUri = "your redirect uri" };
await HttpContext.Authentication.ChallengeAsync(your policy, authenticationProperties);

Ensuite, fournissez une méthode de rappel comme méthode GET, puis suivez les exemples de connexion externe fournis dans les exemples IdentityServer: https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/4_ImplicitFlowAuthenticationWithExternal/src/QuickstartIdentityServer/ Démarrage rapide/Compte/AccountController.cs

13
Espen Medbø

Il existe un exemple avec Azure AD sur github , issu de l'exemple de connexion externe fourni dans exemples IdentityServer .

L'exemple a également résolu un problème connu "Le paramètre d'état généré par le middleware est trop volumineux pour Azure AD # 978"

7