Come sapere quale chiave segreta utilizzare per creare e verificare JWT

0

Abbiamo diversi siti Web in cui gli utenti devono effettuare l'accesso. Per ogni sito Web vogliamo supportare una soluzione single signon basata su JWT ( JSON Token Web ).
Ci sono anche diversi (altri) siti Web che possono agire come provider di identità.

Quando l'utente accede al nostro sito Web e non è autenticato, può scegliere quale provider di identità desidera utilizzare. Il provider di identità invia una richiesta JWT che nella sua forma più semplice dice

 { "username": "john.doe" }

Questo è (hmac) firmato con un segreto condiviso in modo che il nostro sito web possa verificare l'autenticità del reclamo.

Nella mia situazione, un sito Web può supportare più provider di identità e un provider di identità può funzionare per più siti Web. Tutte le combinazioni hanno segreti condivisi unici.

La mia domanda riguarda il modo in cui un provider di identità può sapere quale segreto condiviso utilizzare in quanto supporta più siti Web. Avrebbe senso richiedere l'identità con https://idp1.example.com?aud=mywebsite.com dove mywebsite.com è il sito web che richiede l'identificazione.

Al contrario, ho un problema simile: quando mywebsite.com riceve un JWT come può sapere quale segreto utilizzare per la verifica. Avrebbe senso chiedere al provider di identità di includere "iss": "idp1.example.com" che può essere utilizzato da mywebsite.com per trovare il segreto da utilizzare?

    
posta Jeff 30.08.2016 - 23:19
fonte

1 risposta

1

Tutti questi dettagli sono stati elaborati in OpenID Connect . Suggerisco caldamente di implementarlo (o utilizzare un'implementazione esistente) piuttosto che inventare il proprio protocollo.

    
risposta data 30.08.2016 - 23:56
fonte

Leggi altre domande sui tag