OAuth ha condiviso il server di autorizzazione per più app

8

Nel mio negozio abbiamo un paio di API Web .NET che utilizzano i token OAuth per l'autenticazione. Attualmente, ciascuna API Web è sia server di autorizzazione che di risorse. Gli utenti si autenticano su tutte queste API utilizzando le stesse credenziali, ma al momento devono autenticarsi in modo indipendente per ciascuna API.

Sono interessato a creare un server di autorizzazione condiviso (a la link ), ma mi sto bloccando sulla trasformazione delle richieste. È molto utile per noi essere in grado di aggiungere attestazioni personalizzate (specifiche per l'applicazione) al token che viene emesso, sulla falsariga del seguente esempio:

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);
}

Da quello che posso vedere, se creo un server di autorizzazione comune, tutte le trasformazioni richieste devono esserci. Ciò significa che i server di risorse (le nostre diverse API Web) non possono aggiungere rivendicazioni personalizzate al token dell'utente? Posso aggiungere attestazioni specifiche all'applicazione che richiede il token sul server di autorizzazione o devo eseguire il rig up di qualcosa in modo che il server di autorizzazione aggiunga determinate attestazioni basate sull'app richiedente?

    
posta Joshua Barron 17.11.2014 - 19:18
fonte

1 risposta

1

In passato ho avuto un server di autenticazione che rilasciava token. Quindi il client ha inviato il token di autenticazione a un server di autorizzazione con una richiesta del modulo:

"Il client con questo application_id sta richiedendo l'accesso per l'utente definito nel token di autenticazione allegato per accedere al contenuto X."

Il server di autorizzazione controllato per assicurarsi che l'utente era autorizzato e ha emesso un nuovo token di autorizzazione per il client. Il client ha quindi passato questo token al servizio che ha fornito il contenuto X.

Il server delle autorizzazioni in questo caso aveva bisogno di un aggiornamento di configurazione per conoscere il nuovo contenuto Y.

È possibile modificarlo in modo che i server di risorse chiedano al server di autorizzazione di creare un token contenente attestazioni personalizzate allegate.

    
risposta data 05.02.2016 - 22:39
fonte

Leggi altre domande sui tag