Procedura: configurare un emittente locale
In questo argomento viene illustrato come configurare un client per utilizzare un emittente locale per i token emessi.
Spesso, quando un client comunica con un servizio federato, il servizio specifica l'indirizzo del servizio token di sicurezza previsto per l'emissione del token che il client utilizzerà per autenticarsi presso il servizio federato. In alcune situazioni, è possibile configurare il client per usare un emittente locale.
Windows Communication Foundation (WCF) usa un'autorità emittente locale nei casi in cui l'indirizzo dell'autorità emittente di un binding federato è http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous
o null
. In tali casi, è necessario configurare la classe ClientCredentials con l'indirizzo dell'emittente locale e con l'associazione da utilizzare per comunicare con tale emittente.
Nota
Se la proprietà SupportInteractive della classe ClientCredentials
è impostata su true
, non viene specificato un indirizzo dell'autorità emittente locale e l'indirizzo dell'autorità di certificazione specificato da <wsFederationHttpBinding> o un altro binding federato è http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self
, http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous
o null
, viene usato l'emittente di Windows CardSpace.
Per configurare l'emittente locale nel codice
Creare una variabile di tipo IssuedTokenClientCredential.
Impostare la variabile sull'istanza restituita dalla proprietà IssuedToken della classe
ClientCredentials
. L'istanza viene restituita dalla proprietà ClientCredentials del client (ereditata da ClientBase<TChannel>) o dalla proprietà Credentials della classe ChannelFactory:IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
Impostare la proprietà LocalIssuerAddress su una nuova istanza di EndpointAddress, con l'indirizzo dell'emittente locale come argomento per il costruttore.
itcc.LocalIssuerAddress = new EndpointAddress("http://fabrikam.com/sts");
itcc.LocalIssuerAddress = New EndpointAddress("http://fabrikam.com/sts")
In alternativa, creare una nuova istanza Uri come argomento per il costruttore.
itcc.LocalIssuerAddress = new EndpointAddress(new Uri("http://fabrikam.com/sts"), addressHeaders);
itcc.LocalIssuerAddress = New EndpointAddress( _ New Uri("http://fabrikam.com/sts"), addressHeaders)
Il parametro
addressHeaders
è una matrice di istanze di AddressHeader, come illustrato.itcc.LocalIssuerAddress = new EndpointAddress( new Uri("http://fabrikam.com/sts"), EndpointIdentity.CreateDnsIdentity("fabrikam.com"), addressHeaders);
itcc.LocalIssuerAddress = New EndpointAddress(New Uri("http://fabrikam.com/sts"), _ EndpointIdentity.CreateDnsIdentity("fabrikam.com"), addressHeaders)
Impostare il binding per l'emittente locale usando la proprietà LocalIssuerBinding.
itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
Facoltativo. Aggiungere i comportamenti dell'endpoint configurati per l'emittente locale aggiungendo tali comportamenti alla raccolta restituita dalla proprietà LocalIssuerChannelBehaviors.
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
Per configurare l'emittente locale nella configurazione
Creare un elemento <localIssuer> come elemento figlio dell'elemento <issuedToken>, che è un elemento figlio dell'elemento <clientCredentials> in un comportamento dell'endpoint.
Impostare l'attributo
address
sull'indirizzo dell'emittente locale che accetterà richieste del token.Impostare gli attributi
binding
ebindingConfiguration
su valori che fanno riferimento all'associazione appropriata da utilizzare durante la comunicazione con l'endpoint dell'emittente locale.Facoltativo. Impostare l'elemento <identity> come elemento figlio dell'elemento
<localIssuer>
e specificare le informazioni sull'identità per l'autorità emittente locale.Facoltativo. Impostare l'elemento <headers> come figlio dell'elemento
<localIssuer>
e specificare le intestazioni aggiuntive necessarie per indirizzare correttamente l'emittente locale.
Sicurezza di .NET Framework
Si noti che, se per una determinata associazione vengono specificati l'indirizzo dell'emittente e l'associazione, l'emittente locale non verrà utilizzato per gli endpoint che utilizzano tale associazione. Per i client che prevedono di utilizzare sempre l'emittente locale, è necessario accertarsi di non utilizzare tale associazione o di modificare l'associazione in modo che l'indirizzo dell'emittente sia null
.