2012-03-08 29 views
11

Trong khi cố gắng để kết nối với các dịch vụ cốt lõi tôi nhận được lỗi sau:Tridion 2011 Dịch vụ cốt lõi: Không thể kết nối trong một môi trường SSO

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

Môi trường Tridion được cấu hình với SSO từ SiteMinder.

Dưới đây là mã của tôi:

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(); 
} 

Có ai có kinh nghiệm tương tác với các dịch vụ cốt lõi với một kiểu xác thực khác so với Windows?

UPDATE:

bây giờ tôi nhận được lỗi:

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

clientCredentialType gì nên được sử dụng trong /webservices/web.config cho các ràng buộc?

Khi tôi bỏ ghi chú SsoAgentHttpModule trong /webservies/web.config, chúng tôi gặp lỗi 500 trên webservice, vì vậy SDL đã nói với chúng tôi để lại nhận xét này.

Tôi lấy mô-đun này là bắt buộc để CoreService xác thực với lược đồ xác thực 'Cơ bản'?

+0

Bạn không cần phải bỏ ghi chú SsoAgentHttpModule trong /webservices/web.config vì bạn đã bỏ ghi chú trong cấu hình gốc và nó được thúc đẩy cho toàn bộ trang web. Bạn có chắc là bạn đang kết nối với đúng (url SSO) không? –

Trả lời

6

Có 2 vấn đề với mã của bạn:

  1. Bạn đã thiết authentiction để ẩn danh trên máy chủ và cho rằng tương tự nên được đặt trên máy khách, nhưng nó không phải là trường hợp. Bạn cũng đã bật mô-đun LDAP SSO trên máy chủ khởi động ngay sau khi bạn bật xác thực ẩn danh. Về phía khách hàng, nó sẽ trông giống như xác thực cơ bản thuần tuý, vì vậy bạn có mã bảo vệ khách hàng nên như thế này:

    Security = new BasicHttpSecurity() 
        { 
         Mode = BasicHttpSecurityMode.TransportCredentialOnly, 
         Transport = new HttpTransportSecurity() 
         { 
          ClientCredentialType = HttpClientCredentialType.Basic, 
         } 
        } 
    
  2. Bạn đã đặt tên, nhưng không phải mật khẩu, vì vậy:

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

Ngoài ra, hãy nhớ rằng bạn có thể cần phải chỉ định Tên người dùng đủ điều kiện (SSO theo mặc định) khi đặt người dùng, như SSO \ user

Điều này sẽ giúp bạn tiến gần hơn, nếu bạn vẫn sẽ h vấn đề ave - vui lòng cập nhật câu hỏi của bạn với ngoại lệ gần đây.

+3

Cảm ơn sự giúp đỡ, tôi đã cập nhật câu hỏi với ngoại lệ hiện tại chúng tôi nhận được. –

+0

Hi user978511, bạn có thể truy cập đề xuất Tridion StackExchange khi bạn có một phút không? http://area51.stackexchange.com/proposals/38335/tridion Chúng tôi tin rằng số điểm cam kết yêu cầu số lượt truy cập theo thời gian và do đó không bao gồm bạn trong "người dùng có> 200 đại diện". Cảm ơn! –

Các vấn đề liên quan