Sto esaminando il modo in cui IdentityServer 3 funziona e ho ancora problemi a comprendere appieno.Implementazione dell'autenticazione del server di identità nello scenario del mondo reale
In generale è chiaro per me, ma ancora non sono sicuro di come implementarlo sul progetto reale.
Questo è esempio di base che sto cercando di implementare nel mio caso: link
Ho progetto Web API e voglio chiamare i miei metodi di API da qualsiasi client (MVC, WPF, telefono ...) Così ho bisogno di implementazione adatta a tutti i clienti.
Se ho capito bene (e probabilmente io non sto a capire del tutto), dovrei avere 3 progetti:
- client
- Api
- progetto che ospitano IdentityServer
E tutto i progetti dovrebbero aver richiesto cose come in foto: Passi sull'immagine:
- Diventa gettone
- ritorno gettone
- chiamata API
- Controllare se provvisoria è OK
- Se provvisoria va bene che i dati di ritorno altro spettacolo errore
Le mie domande sono:
- Il mio pensiero su come funziona s ok?
- Dove faccio errori?
- Questo esempio è abbastanza buono per il mio caso? Mi manca qualcosa importante ?
- Devo creare il progetto che ospita IdentityServer, o questo è necessario solo per esempio il codice?
- Il progetto host di IdentityServer deve essere un'applicazione console che comunica con API e client (come nell'esempio) o nel mondo reale ciò avviene in modo diverso?
- È necessario che il server di identità host sia a conoscenza dei client e degli utenti ?
- Eventuali altri progetti, ad eccezione del progetto di server di identità host, devono essere a conoscenza di client e utenti?
- Qual è la differenza tra flusso implicito e ibrido, cosa ho bisogno nel mio caso e perché?
- Come si crea la mia vista di accesso? Voglio avere una pagina html per l'accesso se uso il client web, ma per avere una vista di login wpf se uso wpf, anche una vista diversa per il client mobile.
EDIT: Penso che ho bisogno Resource Owner flow. Suppongo che risorsa visualizzo dove user user user name e password.
Grazie per la risposta. Per quanto riguarda la pagina di accesso non è ancora chiaro per me. Ho intenzione di avere molti clienti per la stessa API. Avrò il client Web MVC, il client Windows WPF e probabilmente altri client. Quindi ho bisogno di avere una pagina di accesso su ogni client. Non ha senso effettuare il login tramite browser se il client è WPF o telefono. Ecco perché voglio utilizzare il flusso del proprietario delle risorse. Per inviare utente e password dal client (qualunque sia il client). Ha senso o dovrei usare un approccio diverso? – Raskolnikov
Quindi non so cosa vuoi dire con "non ci sarà autenticazione"? Sarà l'autenticazione perché con il flusso del proprietario della risorsa è necessario inviare nome utente e password. Solo questo nome utente e pasword saranno forniti dal client e non dal server di identità. Ho ragione? – Raskolnikov
Dovrai autenticare ognuno dei tuoi clienti usando un flusso OpenID Connect che ti permetterà di accedere ai tuoi utenti e quindi di prendere un token di accesso alla tua web API (ad esempio il flusso ibrido). Questo token può quindi essere utilizzato per autorizzare l'accesso all'API Web utilizzando un flusso OAuth come le credenziali del client o il proprietario della risorsa. –