Procedimiento para 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) usa un emisor local en casos en los que la dirección del emisor de un enlace federado es http://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.

Nota

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> u otro enlace federado es http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self, http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous o null, se usa el emisor Windows CardSpace.

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<TChannel>) o la propiedad Credentials de ChannelFactory:

    IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
    
    Dim itcc As IssuedTokenClientCredential = 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("http://fabrikam.com/sts");
    
    itcc.LocalIssuerAddress = New EndpointAddress("http://fabrikam.com/sts")
    

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

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

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

    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)
    
  4. Establezca el enlace para el emisor local con la propiedad LocalIssuerBinding.

    itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
    
    itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
    
  5. Opcional. Agregue los comportamientos del punto de conexión 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> como elemento secundario del elemento <issuedToken>, que es a su vez un elemento secundario del elemento <clientCredentials> en un comportamiento del punto de conexión.

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

  3. Establezca los atributos binding y bindingConfiguration 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 de .NET Framework

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 puntos de conexión 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.

Consulte también