net mvc aspnet asp c# azure-active-directory identityserver4

c# - mvc - Identityserver 4 y Azure AD



identityserver4 client credentials (2)

Hay una muestra con Azure AD en github , bifurcada de la muestra de inicio de sesión externa proporcionada en las muestras de IdentityServer .

La muestra también solucionó un problema conocido "El parámetro de estado generado por el middleware es demasiado grande para Azure AD # 978"

Estoy estudiando el uso de Identity Server 4 para la autenticación dentro de una aplicación MVC basada en C #. Me gustaría usar las cuentas almacenadas en Azure AD como una fuente de usuarios válidos, pero la documentación solo parece referirse a Google y OpenID, y solo menciona Azure al pasar.

¿Alguien sabe de alguna buena documentación y / o tutoriales sobre cómo usar Azure AD en el contexto de usarlo con Identity Server 4?


Puede usar el inicio de sesión en Azure AD desde IdentityServer del mismo modo que usaría el inicio de sesión en IdentityServer desde, por ejemplo, una aplicación de Javascript o MVC.

He hecho esto recientemente, y todo lo que necesita hacer es registrar las opciones de OpenIdConnect en Azure Ad de esta manera:

public void ConfigureAuth(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new CookieAuthenticationOptions()); app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = authority, PostLogoutRedirectUri = postLogoutRedirectUri, }); }

Más información sobre esto aquí: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapp-dotnet

Debería entonces en su acción de inicio de sesión llamar al método ChallengeAsync:

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

Luego proporcione un método de devolución de llamada como un método GET y luego siga los ejemplos de inicio de sesión externos que se proporcionan en los ejemplos de IdentityServer: https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/4_ImplicitFlowAuthenticationWithExternal/src/QuickstartIdentityServer/Quickstart/Account/AccountController.cs