Creazione del token JWT internamente

1

Devo implementare JWT tokens nella mia app API ASP.NET Core per gestire l'autorizzazione.

La mia domanda è, qual è il rischio di generare il mio JWT token all'interno della mia app API invece di averlo gestito per me tramite una soluzione di terze parti come Azure Active Directory B2C o Identity Server ?

C'è un bell'articolo scritto sulla gestione della creazione di JWT token nelle app ASP.NET Core e sembra abbastanza facile e, a prima vista, non vedo nessuno degli svantaggi di creare il mio JWT tokens nella mia app .

Ecco l'articolo: link

Apprezzerei qualcuno che dia l'altro lato della storia in modo che io possa prendere una decisione sana. Grazie.

    
posta Sam 21.12.2017 - 18:54
fonte

1 risposta

1

È probabile che ci saranno più applicazioni che hanno bisogno di generare token.

La maggior parte delle aziende desidera centralizzare la sicurezza. A tal fine, non vogliono che le singole applicazioni generino token. Invece creano un componente che gestisce l'aspetto JWT e si aspetta che le applicazioni utilizzino il componente tramite un pacchetto Nuget. Molto probabilmente questo componente farà parte della pipeline del middleware. Quindi tutte le applicazioni utilizzano / generano token JWT allo stesso modo.

Alcuni esempi di codice componente:

    public static class JwtMiddlewareExtensions
    {
        public static IApplicationBuilder UseJwtMiddleware(this IApplicationBuilder builder);
    }

A condizione che il pacchetto Nuget sia stato scaricato, quindi all'avvio per utilizzare il componente:

        protected virtual void ConfigureAuthorization(IApplicationBuilder app)
        {
            app.UseJwtMiddleware();
        }

Se abbiamo bisogno di un test di integrazione completo, possiamo ignorare l'autorizzazione di sicurezza con la nostra.

    protected override void ConfigureAuthorization(IApplicationBuilder app)
    {
        app.UseMiddleware<AuthMiddleware>();
    }

dove AuthMiddleware è un'implementazione locale simile a questa:

        public async Task Invoke(HttpContext context)
        {
            var identity = (IIdentity)new GenericIdentity("myuserid", "JWT");
            var principal = new System.Security.Principal.GenericPrincipal(identity, new[] { "CREATE" });
            context.Authentication.HttpContext.User = principal;

            await _next.Invoke(context);
        }
    
risposta data 21.12.2017 - 20:14
fonte