Configurar el inicio de sesión único (SSO) SAML en la aplicación desacoplada ASP.NET Core
Resumen
Esta guía proporciona pasos detallados para configurar el inicio de sesión único (SSO) SAML en una aplicación de arquitectura desacoplada ASP.NET Core usando cualquier proveedor de identidad (IdP) compatible con SAML. El backend (ASP.NET Core) maneja la autenticación SSO, genera un token JWT y lo expone de forma segura a cualquier frontend (React, Angular, Vue, etc.).
Compatibilidad con plataformas: El middleware SAML de ASP.NET Core es compatible con ASP.NET Core 2.0 y versiones posteriores. Es compatible con todas las plataformas de ASP.NET Core, incluidas Windows, Linux y macOS.
Requisitos previos: descarga e instalación
- Versión .NET 5 y superiores
- Versión .NET Core 2.1 y .NET Core 3.1
Si experimenta problemas de CORS al realizar llamadas a la API, agregue el siguiente servicio y política.
builder.Services.AddCors(options =>
{
options.AddPolicy("<policy-name>",policy =>
{
policy.WithOrigins("<your-origin>",policy)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
});
});
//Add this in the middleware section
app.UseCors("<policy-name>");
Pasos de configuración
Guía paso a paso para ASP.NET Core SAML SSO usando su proveedor de identidad.
2. Configura tu proveedor de identidad
- En la sección Ajustes Plugin Pestaña, seleccione su proveedor de identidad de la lista que se muestra.
3. Configurar el middleware SAML ASP.NET Core como proveedor de servicios
A continuación se detallan dos formas con las que puede configurar los metadatos de su proveedor de identidad SAML en el middleware.
A] Cargue metadatos usando el botón Cargar metadatos IDP:
- Si su proveedor de identidad le ha proporcionado la URL de metadatos o el archivo de metadatos (solo en formato .xml), entonces puede simplemente configurar los metadatos del proveedor de identidad en el middleware usando el Cargar metadatos de IDP .
- Copie la URL de metadatos o descargue el archivo de metadatos para configurarlo en el extremo de su proveedor de identidad.
- Puede consultar la captura de pantalla a continuación:
- Puedes elegir cualquiera de las opciones según el formato de metadatos que tengas disponible.
B] Configure los metadatos del proveedor de identidad manualmente:
- Después de configurar su Proveedor de identidad, te proporcionará ID de entidad de IDP, URL de inicio de sesión único de IDP y Certificado SAML X509 campos respectivamente.
- Haga clic en Guardar para guardar los datos de su IDP.
4. Prueba de SSO de SAML
- Haga clic en el elemento Configuración de prueba para probar si la configuración SAML que ha realizado es correcta.
- La siguiente captura de pantalla muestra un resultado exitoso. Haga clic en Integración SSO para continuar con la integración SSO.
- Si experimenta algún error en el extremo del middleware, se le mostrará una ventana similar a la siguiente.
- Para solucionar el error, puede seguir los pasos a continuación:
- En Solucionar problemas pestaña, habilite la opción para recibir los registros del complemento.
- Una vez habilitado, podrá recuperar los registros del complemento navegando a Ajustes Plugin pestaña y haciendo clic en Configuración de prueba.
- Descargue nuestra archivo de registro del menú Solucionar problemas Pestaña para ver qué salió mal.
- Puedes compartir el archivo de registro con nosotros en aspnetsupport@xecurify.com y nuestro equipo se comunicará con usted para resolver su problema.
5. Mapeo de atributos
- Después de probar la configuración, asigne los atributos de su aplicación a los atributos del proveedor de identidad (IdP).
- Nota: Todos los atributos mapeados se almacenarán en la sesión para que puedas acceder a ellos en tu aplicación.
6. Código de integración
- Estos pasos le permiten recuperar la información del usuario SSO en su aplicación en forma de reclamos de usuario.
- Nota: Este middleware de prueba solo admite información del usuario en reclamos, la recuperación de información del usuario en sesiones y encabezados está disponible en el complemento premium.
-
Cree un punto final GET en el lado .NET para devolver el token JWT después del inicio de sesión.
Nota: Si tiene un método para crear un JWT, solo necesita seleccionar las reclamaciones de la cookie .NET.
A continuación se muestra el código para su referencia:
[HttpGet("gettoken")]
public string GetToken()
{
if(User.Identity!=null && User.Identity.IsAuthenticated)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes
("Your-JWT-secret-key"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var identity = (ClaimsIdentity)User.Identity;
var claims = identity.Claims;
var token = new JwtSecurityToken(
issuer:"<issuer-name>",
audience:"<audience>",
claims:claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
return null;
}
7. Agregar botón de inicio de sesión
- Hover en Seleccionar acciones y haga clic en Copiar enlace SSO.
- Utilice la siguiente URL como enlace en la aplicación desde donde desea realizar el SSO:
https://<application-url>?ssoaction=login&appid=<app-id>
- Después de iniciar sesión, será redirigido nuevamente a su aplicación frontend, Entonces se le pedirá que haga una llamada a la API para obtener el token e información del usuario.
- A continuación se muestra el código de muestra que puede utilizar para realizar la llamada a la API. punto final del token para obtener el token desde el lado del frontend.
fetch("https://<backend-api-baseurl>/api/gettoken", {
method: "GET",
})
.then((response) => {
//here you will receive the jwt token and the user details
console.log(response);
});
8. Integración de pruebas
- Inicie su aplicación ASP.NET Core Web API
- Inicie su aplicación frontend
- Desde la aplicación frontend, haga clic en el icono Inicio de sesión SSO botón que has añadido
- Después Inicio de sesión SAML, Serás redirigido de nuevo a tu aplicación frontend. En este punto, tu aplicación frontend llama al /api/gettoken punto final, que devuelve el token y los detalles del usuario. Puede usar el ficha JWT para realizar futuras llamadas a la API.
Nota: Si está utilizando el atributo Autorizar en la API para la validación de token, se le solicitará que especifique la política de autenticación ya que ahora tenemos varias políticas registradas.
Para uso de JWT: [Autorizar(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
Artículos Relacionados
Ponte en contacto
Póngase en contacto con nosotros en aspnetsupport@xecurify.com y nuestro equipo le ayudará a configurar el inicio de sesión único (SSO) SAML de ASP.NET Core. Le ayudaremos a seleccionar la solución o el plan más adecuado según sus necesidades.
