2015-06-09 11 views
44

Sto provando a creare qualcosa come: il client autentica e ottiene token da STS1 personalizzato, il client successivo autorizza con la chiave macchina e viene rilasciato token su STS2 personalizzato e ottiene un altro token. Con l'ultimo token, i client richiedono i metodi sul servizio RP.In WCF/WIF come unire le attestazioni da due token personalizzati di sts diversi client

Tutti i servizi sono ospitati su IIS e utilizzano lo scenario di federazione attiva. Entrambi gli STS hanno endpoint con binding ws2007Federation e ws2007Http e RP utilizza ws2007FederationBinding con STS2 come emittente.

Se creo un canale con CreateChannelWithIssuedToken, è possibile visualizzare solo token da STS1 e non è possibile ottenere token da STS2.

Quindi ho deciso di passare il token da STS1 come proprietà RST ActAs su richiesta al token STS2. E quello ha fallito - non può decriptare il token.

  1. Come posso passare entrambi i token a STS2 e unire le attestazioni in essi?
  2. È una cattiva idea - inviare con RST solo crediti estratti dal token STS1?
+1

Quello che probabilmente serve è, che si fida STS2 STS1 per l'autenticazione e la vostra applicazione si fida STS2 – TGlatzer

+1

@TGlatzer Si, sia la fiducia STS a vicenda, ma accetta gettoni con uri diversi del pubblico. STS1 crea token solo con attestazioni sull'utente, STS2 accetta token con chiave macchina e deve fornire attestazioni per utente + macchina. Servizio RP affidabile solo STS2 – myrx

+0

Dove si ottiene esattamente il messaggio di errore "impossibile decodificare il token" - sul client o su STS2? –

risposta

1

Generalmente si desidera utilizzare un solo token ad ogni passaggio. Quindi, se hai bisogno di unire le rivendicazioni, vorrai farlo nel passaggio di trasformazione delle attestazioni del secondo STS.

Quindi il flusso dovrebbe autenticarsi con STS1, quindi autenticare con STS2 con il token di STS1. A quel punto si passerebbe attraverso le attestazioni e si trasformerebbe per aggiungere ulteriori richieste in base alle esigenze. Quindi il token risultante sarebbe pronto per consumare dall'applicazione RP.

Ho effettivamente iniziato una serie di blog su uno scenario molto simile che abbiamo recentemente architettato. Non essere eccessivamente auto-promuovente, ma non mi fa guadagnare soldi, quindi lo posterò nel caso sia utile.

http://www.livingthearchitecture.com/mixing-sso-with-existing-technologies/

Sarei felice di andare più in profondità, ma a seconda delle specifiche del tuo scenario, le specifiche della soluzione cambierà notevolmente. Penso che quanto sopra esprima l'approccio generale che vorrete. Fammi sapere se posso aiutarti di più.

+0

grazie per la risposta. In realtà voglio mantenere entrambi i token - token1 da IdS (STS1) necessari per ottenere token2 da STS2 e sopravvive fino alla fine della sessione.btw token2 può essere generato più volte con diverse attestazioni nella durata della sessione fino a quando token1 è valido Sì, STS2 trasforma token1, ma non so ancora come passare ulteriori lcaims/proprietà con token1 senza infrangere i principi di sicurezza perché i parametri aggiuntivi non sono crittografato/firmato con certificato come corpo del token generato. – myrx