5

Sto lavorando a un prototipo per una re-architettura del sito utilizzando ASP.NET 5 e sto discutendo utilizzando IdentityServer4 per la mia autenticazione e autorizzazione. Ho esaminato un sacco di esempi e articoli sull'installazione di IdentityServer3 e 4 e sto cercando di riprendermi se è in grado di gestire i requisiti del mio cliente in modo corretto. Ecco le mie esigenze.asp.net 5 e IdentityServer4

Ho 3 siti che necessitano di autorizzazione. Il sito 1 (abc.com) richiede l'autenticazione di Windows e sarà una combinazione di chiamate mvc e webapi che utilizzano ruoli (o ruoli convertiti in attestazioni) per l'autorizzazione. Sito 2 (def.com) è un sito attendibile che desidera un widget di login con una casella di testo username/password/rememberme sul proprio sito che, una volta inviato, autentificherà l'utente e li reindirizzerà al sito 3 (xyz.com). Il sito 3 avrà anche una propria pagina di accesso e sarà una combinazione di chiamate mvc e webapi che utilizzano le attestazioni. I siti 2 e 3 non utilizzeranno l'autenticazione di Windows e il client non li vuole reindirizzare alla schermata di login del server di identità, ma piuttosto con una propria schermata di accesso e chiamando il server di identità dal codice con le credenziali per accedere.

Ecco le mie domande su questo scenario e IdentityServer4.

  1. può Idsvr4 gestire un client utilizzando l'autenticazione di Windows e un altro utilizzando l'autenticazione username/password?
    • Se è così, c'è una ragione avere finestre di autenticazione in idsvr4 o dovrebbe semplicemente usare standard di finestre di autenticazione all'interno della webapp?
  2. Può idsvr4 essere configurato per avere il client raccogliere i/password di valori nome utente/RememberMe e li passa attraverso il codice per ottenere i gettoni JWT appropriate sia per MVC e WebAPI?

    • caso affermativo, può li accedere sia le applicazioni MVC e WebAPI su un altro sito?

    • Se è così, questo aggiramento è il vero scopo di identityserver4 e quindi è una cattiva idea?

  3. Se è in grado di gestire questo scenario ed è una buona idea, come faccio a impostare i client, scopi e il codice per gestire il login tramite il codice e reindirizzare?

Esempi sono grandi e molto gradita, ma non sono nemmeno sicuro che cosa verbosità da utilizzare per la ricerca di questo scenario così anche avermi nella giusta direzione sarebbe di grande aiuto.

+0

Questo potrebbe essere utile https://www.linkedin.com/pulse/securing-net-core-web-api-identityserver4-resource-owner-dalvandi?trk=mp-author-card –

risposta

1

Non sicuro se questa domanda è ancora attiva. Ma sì, credo che tu possa fare tutto questo.

1) È possibile impostare quale LDP è disponibile per ogni cliente impostando IdentityProviderRestrictions sul client (docs)

1,1) - Non sei sicuro di quello che vuoi dire, credo che uno dei punti di avere idsrv è quello di sentralize l'autenticazione e semplifica l'integrazione dei siti Web futuri con lo stesso servizio.

2) Quando si effettua l'accesso utilizzando un client (applicazione), si specifica anche apiResource a cui il client ha accesso e l'applicazione deve aggiungerla agli ambiti richiesti al momento dell'accesso. Quindi se il client è l'applicazione mvc , basta aggiungere l'ApiResource nel AllowedScopes e impostare lo request_type su id_token code - questo darebbe all'utente un access_token che viene passato con ogni richiesta all'API di backend. (docs)

2.1) - In pratica, l'utente effettua il login in entrambi i siti, utilizzando un token di accesso che indica che l'utente è autorizzato a utilizzare l'API di back-end.

2.2) - A mio parere questo flusso è una delle cose che rende grande l'IDSRV - e lo menzionano addirittura come una grande caratteristica di idsrv. Hai solo bisogno di 1 viaggio su authserver per accedere a tutti i sistemi.

come per pt. 3 - Dai un'occhiata in più ai documenti, prova a configurare un progetto vuoto seguendo i quickstart.

Per l'accesso dalla propria pagina di accesso, è necessario utilizzare il tipo di concessione Resource Owner password - Anche se non si consiglia di farlo per problemi di sicurezza (trasmissione di password sul filo) - è supportato.