2012-03-08 19 views
11

Al tratar de conectarse al servicio de Core me sale el siguiente error:Tridion Servicio Core 2011: No se puede conectar en un entorno de SSO

The HTTP request was forbidden with client authentication scheme 'Anonymous'

El entorno Tridion está configurado con SSO de SiteMinder.

Aquí está mi código:

public static ICoreService2010 GetTridionClient() 
{ 
    var binding = new BasicHttpBinding() 
    { 
     Name = "BasicHttpBinding_TridionCoreService", 
     CloseTimeout = new TimeSpan(0, 1, 0), 
     OpenTimeout = new TimeSpan(0, 1, 0), 
     ReceiveTimeout = new TimeSpan(0, 10, 0), 
     SendTimeout = new TimeSpan(0, 1, 0), 
     AllowCookies = false, 
     BypassProxyOnLocal = false, 
     HostNameComparisonMode = HostNameComparisonMode.StrongWildcard, 
     MaxBufferSize = 4194304, // 4MB 
     MaxBufferPoolSize = 4194304, 
     MaxReceivedMessageSize = 4194304, 
     MessageEncoding = WSMessageEncoding.Text, 
     TextEncoding = System.Text.Encoding.UTF8, 
     TransferMode = TransferMode.Buffered, 
     UseDefaultWebProxy = true, 
     ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() 
     { 
      MaxDepth = 32, 
      MaxStringContentLength = 4194304, // 4MB 
      MaxArrayLength = 4194304, 
      MaxBytesPerRead = 4194304, 
      MaxNameTableCharCount = 16384 
     }, 
     Security = new BasicHttpSecurity() 
     { 
      Mode = BasicHttpSecurityMode.TransportCredentialOnly, 
      Transport = new HttpTransportSecurity() 
      { 
       ClientCredentialType = HttpClientCredentialType.None, 
      }, 
      Message = new BasicHttpMessageSecurity() 
      { 
       ClientCredentialType = BasicHttpMessageCredentialType.UserName 
      } 
     } 
    }; 

    string hostname = ConfigurationManager.AppSettings["TridionUrl"]; 
    string username = ConfigurationManager.AppSettings["TridionUsername"]; 

    hostname = string.Format("{0}{1}{2}", 
           hostname.StartsWith("http") ? "" : "http://", 
           hostname, 
           hostname.EndsWith("/") ? "" : "/"); 
    var endpoint = new EndpointAddress(hostname + 
           "/webservices/CoreService.svc/basicHttp_2010"); 
    var factory = new ChannelFactory<ICoreService2010>(binding, endpoint); 
    factory.Credentials.UserName.UserName = username; 

    return factory.CreateChannel(); 
} 

¿Alguien tiene experiencia de interactuar con el Servicio básico con un tipo de autenticación que no sea Windows?

ACTUALIZACIÓN:

ahora consigo el error:

The HTTP request was forbidden with client authentication scheme 'Basic'.

Lo clientCredentialType se debe utilizar en el /webservices/web.config para los enlaces?

Cuando elimino el comentario del SsoAgentHttpModule en /webservies/web.config, obtenemos un error de 500 en el servicio web, por lo que SDL nos dijo que dejáramos este comentario.

¿Debo entender que este módulo es necesario para que CoreService se autentique con el esquema de autenticación 'Básico'?

+0

No es necesario descomentar SsoAgentHttpModule en /webservices/web.config ya que lo ha descomentado en la configuración raíz y se ha propuesto para todo el sitio web. ¿Estás seguro de que te estás conectando a la URL correcta (SSO)? –

Respuesta

6

Hay 2 problemas con su código:

  1. os han puesto a authentiction anónimo en el servidor y asumió ese mismo debe fijarse en el cliente, pero no es el caso. También ha habilitado el módulo LDAP SSO en el servidor que se activa tan pronto como activa la autenticación anónima. En el lado del cliente que se verá como la autenticación básica normal, por lo que el código de seguridad del cliente debería ser así:

    Security = new BasicHttpSecurity() 
        { 
         Mode = BasicHttpSecurityMode.TransportCredentialOnly, 
         Transport = new HttpTransportSecurity() 
         { 
          ClientCredentialType = HttpClientCredentialType.Basic, 
         } 
        } 
    
  2. Ha configurado nombre de usuario, pero no la contraseña, por lo que:

    factory.Credentials.UserName.UserName = username; 
    factory.Credentials.UserName.Password = password; 
    

Además, tenga en cuenta que es posible que necesite especificar el Calificador de nombre de usuario (SSO por defecto) al configurar el usuario, como SSO \ user

Esto debería acercarlo un paso más, si aún lo hace h problemas ave - por favor actualice su pregunta con una excepción reciente.

+3

Gracias por la ayuda, he actualizado la pregunta con la excepción que ahora obtenemos. –

+0

Hola usuario978511, ¿podría visitar la propuesta de Tridion StackExchange cuando tenga un minuto, por favor? http://area51.stackexchange.com/proposals/38335/tridion Creemos que el puntaje de compromiso requiere visitas de vez en cuando, por lo que no lo incluimos en la figura de "usuarios con> 200 rep". ¡Gracias! –

Cuestiones relacionadas