Devo creare una coppia di chiavi per cliente come fornitore di servizi in SAML?

3

Questo è più o meno il contrario di ciò che viene richiesto in questa domanda .

Recentemente ho aggiunto SSO con SAML a un'applicazione Web SaaS, rendendo tale applicazione il Service Provider (SP). Ciò viene fatto in modo che i clienti (aziende) possano utilizzare il proprio Identity Provider (IdP) in modo tale che gli utenti (i dipendenti delle aziende) non debbano conservare credenziali nella nostra applicazione Web, ma possono semplicemente continuare a utilizzare i loro account locali esistenti.

In SAML, l'SP invia una richiesta di autenticazione all'IdP che risponde con un'asserzione che fornisce le informazioni di autenticazione sull'utente che desidera accedere. Affinché entrambe le parti (SP e IdP) siano sicure che richiesta e risposta non sono fabbricati da un intercettatore, sono firmati con una chiave privata. Il certificato utilizzato per verificare le firme delle richieste e delle risposte è stato precedentemente scambiato come parte dello scambio di metadati SAML che viene eseguito manualmente dagli amministratori delle parti coinvolte.

La domanda è: Ci sono significativi svantaggi per la sicurezza di questo sistema se uso la stessa coppia di chiavi pubblica / privata per tutti i clienti o è consigliabile passare attraverso i cerchi per creare una coppia di chiavi separata per ogni cliente individuale?

Sto chiedendo esplicitamente la sicurezza di questo problema. So che se devo scambiare la chiave a causa di un problema di sicurezza, tutti i clienti dovranno aggiornare il proprio IdP per incorporare il nuovo certificato. Non ho ancora deciso, ma mi spingo a pensare che questo sia un rischio accettabile. Quelle chiavi sarebbero memorizzate l'una accanto all'altra; una violazione di qualsiasi descrizione richiederebbe comunque nuove chiavi per tutti i clienti.

    
posta musiKk 21.04.2015 - 13:12
fonte

2 risposte

3

La migliore pratica è che ogni IDP e ogni SP ha la propria coppia di chiavi. Più facile se è necessario emettere un nuovo certificato per uno di essi e impedisce a uno di essi di posare come un altro ecc.

Ma questa è la coppia di chiavi per l'IDP e la tua applicazione web. Stai chiedendo se i clienti hanno bisogno di chiavi diverse. Se è davvero una domanda se l'utente finale deve avere chiavi separate rispetto alla risposta è sicuramente sì. Allo stesso modo che dovrebbero avere password diverse.

    
risposta data 21.04.2015 - 14:05
fonte
1

Mentre ho visto alcuni SP firmare AuthnRequests con chiavi univoche, questo non dura a lungo quando iniziano a ridimensionarsi. Di solito determinano che la gestione di tutte quelle chiavi private è un problema serio man mano che diventano più grandi, e quindi passano all'utilizzo di una singola chiave privata per la firma. Non c'è niente di sbagliato in questo: la firma di AuthnRequest dimostra che proviene dal titolare della chiave privata e può essere convalidata da chiunque abbia la chiave pubblica. Ad esempio, puoi ottenere il certificato che Salesforce utilizza per firmare le sue richieste direttamente da qui .

In molti casi, gli SP di grandi dimensioni (come Salesforce) hanno anche l'onere di conservare il certificato che l'IdP usa per firmare le sue risposte anche sull'IdP. Come IdP, accedi all'interfaccia dell'amministratore su SP e carichi la tua chiave pubblica. Se lo lasci scadere, questo è il tuo problema, non il loro, e il processo si ridimensiona.

    
risposta data 22.04.2015 - 13:49
fonte

Leggi altre domande sui tag