Cómo: Configurar un emisor local

En este tema se describe cómo configurar un cliente para utilizar un emisor local para los tokens emitidos.

A menudo, cuando un cliente se comunica con un servicio federado, el servicio especifica la dirección del servicio de token de seguridad que se espera que emita el token y que el cliente utilizará para autenticarse con el servicio federado. En algunas situaciones, el cliente se puede configurar para utilizar un emisor local.

Windows Communication Foundation (WCF) utiliza un emisor local en casos donde la dirección del emisor de un enlace federado sea https://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous o null. En casos como éste, debe configurar ClientCredentials con la dirección del emisor local y el enlace que se va a utilizar para comunicarse con ese emisor.

Aa347715.note(es-es,VS.100).gifNota:
Si la propiedad SupportInteractive de la clase ClientCredentials está establecida en true, no se especifica una dirección del emisor local y la dirección del emisor especificada por wsFederationHttpBinding element u otro enlace federado es https://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self, https://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous, o es null, a continuación, se usará el emisor CardSpace de Windows.

Para configurar el emisor local en código

  1. Cree una variable de tipo IssuedTokenClientCredential

  2. Establezca la variable en la instancia devuelta de la propiedad IssuedToken de la clase ClientCredentials. Esa instancia es devuelta por la propiedad ClientCredentials del cliente (heredada de ClientBase) o la propiedad Credentials de ChannelFactory:

    Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
    
    IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
    
  3. Establezca la propiedad LocalIssuerAddress en una nueva instancia de EndpointAddress, con la dirección del emisor local como un argumento para el constructor.

    itcc.LocalIssuerAddress = New EndpointAddress("https://fabrikam.com/sts")
    
    itcc.LocalIssuerAddress = new EndpointAddress("https://fabrikam.com/sts");
    

    De manera alternativa, cree una nueva instancia Uri como un argumento para el constructor.

    itcc.LocalIssuerAddress = New EndpointAddress( _
    New Uri("https://fabrikam.com/sts"), addressHeaders)
    
    itcc.LocalIssuerAddress = new EndpointAddress(new Uri("https://fabrikam.com/sts"),
        addressHeaders);
    

    El parámetro addressHeaders es una matriz de instancias de AddressHeader, tal como se muestra.

    itcc.LocalIssuerAddress = New EndpointAddress(New Uri("https://fabrikam.com/sts"), _
    EndpointIdentity.CreateDnsIdentity("fabrikam.com"), addressHeaders)
    
    itcc.LocalIssuerAddress = new EndpointAddress(
        new Uri("https://fabrikam.com/sts"),
        EndpointIdentity.CreateDnsIdentity("fabrikam.com"),
        addressHeaders);
    
  4. Establezca el enlace para el emisor local utilizando la propiedad LocalIssuerBinding.

    itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
    
    itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
    
  5. Opcional. Agregue los comportamientos del extremo configurados para el emisor local agregando tales comportamientos a la colección devuelta por la propiedad LocalIssuerChannelBehaviors.

    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
    
    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
    

Para configurar el emisor local en la configuración

  1. Cree un elemento <localIssuer><issuedToken> como un elemento secundario del elemento<clientCredentials>, que es a su vez un elemento secundario del elemento en un comportamiento del extremo.

  2. Establezca el atributo address en la dirección del emisor local que aceptará las solicitudes del token.

  3. Establezca los atributos bindingConfiguration y binding en valores que hacen referencia al enlace adecuado que se debe usar cuando se comunica con el extremo del emisor local.

  4. Opcional. Establezca el elemento <identity>< como elemento secundario del elemento localIssuer> y especifique la información de identidad para el emisor local.

  5. Opcional. Establezca el elemento <headers>< como elemento secundario del elemento localIssuer> y especifique los encabezados adicionales que son necesarios para dirigirse correctamente al emisor local.

Seguridad

Tenga en cuenta que si se especifica una dirección y un enlace del emisor para un enlace determinado, el emisor local no se utiliza para los extremos que utilizan ese enlace. Los clientes que siempre esperan utilizar el emisor local deberían asegurarse de que no utilizan este enlace o que modifican el enlace de manera que la dirección del emisor sea null.

Vea también

Tareas

Cómo: Configurar las credenciales en un servicio de federación
Cómo crear un cliente federado
Cómo: Crear un WSFederationHttpBinding