Servidor de autorización compartido de OAuth para varias aplicaciones

8

En mi tienda tenemos un par de API web .NET que usan tokens OAuth para la autenticación. Actualmente, cada API web es un servidor de recursos y de autorización. Los usuarios se autentican en todas estas API con la misma credencial, pero actualmente necesitan autenticarse en cada API de forma independiente.

Estoy interesado en crear un servidor de autorización compartido (a la enlace ), pero me estoy quedando colgado en la transformación de reclamaciones. Nos resulta muy útil poder agregar notificaciones personalizadas (específicas de la aplicación) al token que se emite, en la línea del siguiente ejemplo:

public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{

    /* validate credentials here... */

    var identity = new ClaimsIdentity("JWT");

    identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
    identity.AddClaim(new Claim("sub", context.UserName));
    identity.AddClaim(new Claim(ClaimTypes.Role, "Manager"));
    identity.AddClaim(new Claim(ClaimTypes.Role, "Supervisor"));

    var props = new AuthenticationProperties(new Dictionary<string, string>
        {
            {
                 "audience", (context.ClientId == null) ? string.Empty : context.ClientId
            }
        });

    var ticket = new AuthenticationTicket(identity, props);
    context.Validated(ticket);
    return Task.FromResult<object>(null);
}

Por lo que puedo ver, si creo un servidor de autorización común, todas las transformaciones de reclamaciones deben ocurrir allí. ¿Esto significa que los servidores de recursos (nuestras diferentes API web) no pueden agregar ningún reclamo personalizado al token del usuario? ¿Puedo agregar reclamaciones específicas a la aplicación que solicita el token en el servidor de Autorización, o tengo que preparar algo para que el servidor de autorización agregue ciertas reclamaciones basadas en la aplicación solicitante?

    
pregunta Joshua Barron 17.11.2014 - 19:18

1 respuesta

1

En el pasado he tenido un servidor de autenticación que emitió tokens. Luego, el cliente envió el token de autenticación a un servidor de autorización con una solicitud del formulario:

"El cliente con este application_id está solicitando acceso para el usuario definido en el token de autenticación adjunto para acceder al contenido X".

El servidor de autorización se comprobó para asegurarse de que el usuario estaba autorizado y emitió un nuevo token de autorización al cliente. El cliente luego pasó este token al servicio que proporcionó el contenido X.

El servidor de autorización en este caso necesitaba una actualización de configuración para conocer el contenido nuevo Y.

Puede modificarlo para que los servidores de recursos le pidan al servidor de autorización que cree un token que contenga notificaciones personalizadas adjuntas.

    
respondido por el Chad Clark 05.02.2016 - 22:39

Lea otras preguntas en las etiquetas