Procedura: configurare le credenziali in un servizio federativo

In Windows Communication Foundation (WCF), la creazione di un servizio federativo è costituito dalle procedure principali seguenti:

  1. Configurazione di una classe WSFederationHttpBinding o di un'associazione personalizzata simile. Per ulteriori informazioni sulla creazione di un'associazione appropriata, vedere Procedura: creare una classe WSFederationHttpBinding.
  2. Configurazione della classe IssuedTokenServiceCredential, che controlla come vengono autenticati i token emessi presentati al servizio.

In questo argomento vengono fornite informazioni dettagliate sul secondo passaggio. Per ulteriori informazioni sul funzionamento di un servizio federativo, vedere Federazione.

Per impostare le proprietà di IssuedTokenServiceCredential nel codice

  1. Utilizzare la proprietà IssuedTokenAuthentication della classe ServiceCredentials per restituire un riferimento a un'istanza di IssuedTokenServiceCredential. L'accesso alla proprietà viene eseguito dalla proprietà Credentials della classe ServiceHostBase.

  2. Se devono essere autenticati token autocertificati, ad esempio schede CardSpace, impostare la proprietà AllowUntrustedRsaIssuers su true. Il valore predefinito è false.

  3. Popolare l'insieme restituito dalla proprietà KnownCertificates con istanze della classe X509Certificate2. Ogni istanza rappresenta un emittente da cui il servizio autenticherà i token.

    Nota

    A differenza dell'insieme lato client restituito dalla proprietà ScopedCertificates, l'insieme dei certificati noti non è un insieme con chiave. Il servizio accetta i token emessi dai certificati specificati indipendentemente dall'indirizzo del client che ha inviato il messaggio contenente il token emesso (salvo gli ulteriori limiti descritti più avanti in questo argomento).

  4. Impostare la proprietà CertificateValidationMode su uno dei valori dell'enumerazione X509CertificateValidationMode. Questa operazione può essere eseguita solo nel codice. L'impostazione predefinita è ChainTrust.

  5. Se la proprietà CertificateValidationMode viene impostata su Custom, assegnare un'istanza della classe X509CertificateValidator personalizzata alla proprietà CustomCertificateValidator.

  6. Se la proprietà CertificateValidationMode viene impostata su ChainTrust o su PeerOrChainTrust, impostare la proprietà RevocationMode su un valore appropriato ottenuto dall'enumerazione X509RevocationMode. Si noti che la modalità di revoca non viene utilizzata nelle modalità di convalida PeerTrust e Custom.

  7. Se necessario, assegnare un'istanza di una classe SamlSerializer personalizzata alla proprietà SamlSerializer. Per l'analisi delle asserzioni SAML personalizzate, ad esempio, è necessario un serializzatore SAML (Security Assertions Markup Language).

Per impostare le proprietà di IssuedTokenServiceCredential nella configurazione

  1. Creare un elemento <issuedTokenAuthentication> come figlio di un elemento <serviceCredentials>.

  2. Impostare l'attributo allowUntrustedRsaIssuers dell'elemento <issuedTokenAuthentication> su true in caso di autenticazione di un token autocertificato, ad esempio una scheda CardSpace.

  3. Creare un elemento <knownCertificates> come figlio dell'elemento <issuedTokenAuthentication>.

  4. Creare zero o più elementi <add> come figli dell'elemento <knownCertificates> e specificare come individuare il certificato utilizzando gli attributi storeLocation, storeName, x509FindType e findValue.

  5. Se necessario, impostare l'attributo samlSerializer dell'elemento <issuedTokenAuthentication> sul nome del tipo della classe SamlSerializer personalizzata.

Esempio

Nell'esempio seguente vengono impostate le proprietà di IssuedTokenServiceCredential nel codice.

Affinché un servizio federativo autentichi un client, per il token emesso devono essere osservate le condizioni seguenti:

  • Quando la firma digitale del token emesso utilizza un identificatore della chiave di protezione RSA, la proprietà AllowUntrustedRsaIssuers deve essere true.
  • Quando la firma del token emesso utilizza un numero di serie dell'emittente X.509, un identificatore della chiave del soggetto X.509 o un identificatore di protezione dell'identificazione personale X.509, il token emesso deve essere firmato da un certificato nell'insieme restituito dalla proprietà KnownCertificates della classe IssuedTokenServiceCredential.
  • Quando il token emesso viene firmato utilizzando un certificato X.509, il certificato deve eseguire la convalida secondo la semantica specificata dal valore della proprietà CertificateValidationMode, indipendentemente dal fatto che il certificato sia stato inviato al componente come X509RawDataKeyIdentifierClause oppure ottenuto dalla proprietà KnownCertificates. Per ulteriori informazioni sulla convalida dei certificati X.509, vedere Utilizzo dei certificati.

Ad esempio, impostando la proprietà CertificateValidationMode su PeerTrust, verrebbe autenticato un token emesso il cui certificato di firma si trova nell'archivio certificati TrustedPeople. In tal caso, impostare la proprietà TrustedStoreLocation su CurrentUser o su LocalMachine. È possibile selezionare altre modalità, tra cui Custom. Quando si seleziona Custom, è necessario assegnare un'istanza della classe X509CertificateValidator alla proprietà CustomCertificateValidator. Con la convalida personalizzata è possibile convalidare i certificati mediante qualsiasi criterio. Per ulteriori informazioni, vedere Procedura: creare un servizio che utilizza una convalida del certificato personalizzata.

Vedere anche

Attività

Procedura: disattivare sessioni protette in un'associazione WSFederationHttpBinding
Procedura: creare una classe WSFederationHttpBinding
Procedura: creare un client federato

Concetti

Federazione
Federazione e attendibilità
Utilizzo dei certificati
Modalità di autenticazione di SecurityBindingElement

Altre risorse

Federation Sample