2012-03-08 14 views
11

में कनेक्ट करने के लिए की प्रमुख सेवा मैं निम्न त्रुटि प्राप्त करने के लिए कनेक्ट करने का प्रयास करते समय:Tridion 2011 की प्रमुख सेवा: असमर्थ एक एसएसओ पर्यावरण

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

Tridion पर्यावरण SiteMinder से SSO के साथ कॉन्फ़िगर किया गया है।

यहाँ मेरी कोड है:

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

किसी को भी एक प्रमाणीकरण विंडोज के अलावा अन्य प्रकार के साथ की प्रमुख सेवा के साथ बातचीत करने का अनुभव है?

अद्यतन:

अब मैं त्रुटि मिलती है:

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

क्या clientCredentialType बाइंडिंग के लिए /webservices/web.config में इस्तेमाल किया जाना चाहिए?

जब मैं /webservies/web.config में SsoAgentHttpModule को अनमोल करता हूं तो हमें webservice पर 500 त्रुटि मिलती है, इसलिए एसडीएल ने हमें यह टिप्पणी छोड़ने के लिए कहा।

मुझे लगता है कि CoreService के लिए प्रमाणीकरण योजना 'बेसिक' के साथ प्रमाणित करने के लिए यह मॉड्यूल आवश्यक है?

+0

आपको /webservices/web.config में SsoAgentHttpModule को असम्बद्ध करने की आवश्यकता नहीं है क्योंकि आपने रूट कॉन्फ़िगरेशन में इसे असम्बद्ध किया है और यह पूरी वेबसाइट के लिए प्रचारित है। क्या आप वाकई उचित (एसएसओ यूआरएल) से जुड़ रहे हैं? –

उत्तर

6

अपने कोड के साथ 2 समस्याएं हैं:

  1. आप सर्वर पर अनाम करने authentiction सेट और ग्रहण एक ही ग्राहक पर स्थापित किया जाना चाहिए कि है, लेकिन यह ऐसा नहीं है। आपने सर्वर पर एलडीएपी एसएसओ मॉड्यूल भी सक्षम किया है जैसे ही आप अज्ञात प्रमाणीकरण को चालू करते हैं। ग्राहक पक्ष पर यह सादे बुनियादी प्रमाणीकरण की तरह दिखाई देगा, ताकि आप ग्राहक सुरक्षा कोड इस तरह होना चाहिए:

    Security = new BasicHttpSecurity() 
        { 
         Mode = BasicHttpSecurityMode.TransportCredentialOnly, 
         Transport = new HttpTransportSecurity() 
         { 
          ClientCredentialType = HttpClientCredentialType.Basic, 
         } 
        } 
    
  2. आप इस उपयोगकर्ता नाम निर्धारित किया है, लेकिन नहीं पासवर्ड है, तो:

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

साथ ही, ध्यान रखें कि उपयोगकर्ता को सेट करते समय आपको उपयोगकर्ता नाम क्वालीफायर (डिफ़ॉल्ट रूप से एसएसओ) निर्दिष्ट करने की आवश्यकता हो सकती है, जैसे एसएसओ \ उपयोगकर्ता

यह आपको एक कदम आगे ले जाना चाहिए, अगर आप अभी भी एवी समस्याएं - कृपया हालिया अपवाद के साथ अपना प्रश्न अपडेट करें।

+3

सहायता के लिए धन्यवाद, मैंने अब अपवाद के साथ प्रश्न अपडेट किया है जिसे हम अब प्राप्त करते हैं। –

+0

हाय उपयोगकर्ता978511, क्या आप एक मिनट कृपया ट्रिडियन स्टैक एक्सचेंज प्रस्ताव पर जा सकते हैं? http://area51.stackexchange.com/proposals/38335/tridion हम मानते हैं कि प्रतिबद्धता स्कोर को समय-समय पर विज़िट की आवश्यकता होती है और इसलिए आपको "200 प्रतिनिधि> उपयोगकर्ताओं के साथ" शामिल नहीं किया जाता है। धन्यवाद! –

संबंधित मुद्दे