2014-06-24 5 views
9

मैं वर्तमान में जारी टोकन का उपयोग कर .NET एप्लिकेशन और सर्वर के बीच संचार सुरक्षित करने के लिए थिंकटेक्चर आइडेंटिटी सर्वर संस्करण 2.4 और विंडोज आइडेंटिटी फाउंडेशन का उपयोग कर रहा हूं।डब्ल्यूआईएफ (थिंकटेक्चर आइडेंटिटी सर्वर का उपयोग करके) और डुप्लेक्स डब्ल्यूसीएफ चैनल

मेरे पास संघीय एंडपॉइंट को उजागर करके और मानक अनुरोध से लौटाए गए सुरक्षा टोकन की आपूर्ति के लिए चैनल फैक्ट्री के "CreateChannelWithIssuedToken (SecurityToken)" विधि का उपयोग करके मानक डब्ल्यूसीएफ नेट टीसीपी चैनल पर काम कर रहा है।

हालांकि डुप्लेक्सChannelFactory के लिए कोई समकक्ष विधि प्रतीत नहीं होती है जो हमें एक इंस्टेंस संदर्भ में पास करने की अनुमति देती है। मैंने इस आलेख को पढ़ा है - http://msdn.microsoft.com/en-us/library/cc668765(v=vs.110).aspx - यह विवरण प्राप्त करने के लिए डुप्लेक्स बाइंडिंग कैसे बनाएं, हालांकि चैनल बनाने पर मैं चैनल पर सुरक्षा टोकन सेट करने का कोई तरीका नहीं देख सकता।

क्लाइंट प्रमाण-पत्र पर जारी किए गए संपत्ति - http://msdn.microsoft.com/en-us/library/system.servicemodel.description.clientcredentials.issuedtoken(v=vs.110).aspx है, हालांकि यह केवल पढ़ा जाता है।

क्या किसी ने टीसीपी संदेश सुरक्षा मोड का उपयोग करके डुप्लेक्स चैनल पर संघीय सुरक्षा हासिल की है जो कुछ सलाह दे सकता है?

उत्तर

3

हालांकि मैन्युअल रूप से चैनल बनाना और एसटीएस के साथ खुद को टोकन जारी करना गलत नहीं है, तो आप यह करने के लिए डब्ल्यूआईएफ ढांचे का लाभ उठा सकते हैं।

यदि आप एसटीएस के बारे में जागरूक होने के लिए कॉन्फ़िगरेशन के माध्यम से अपने क्लाइंट को कॉन्फ़िगर करते हैं, तो फ्रेमवर्क आपके द्वारा सेट किए गए संदेश प्रमाण-पत्रों का उपयोग करके टोकन को पुनर्प्राप्त करेगा। फ्रेमवर्क तब चैनल के प्रमाण-पत्रों पर "जारी किए गए" संपत्ति को सेट करेगा।

<ws2007HttpBinding> 
    <binding name="ws"> 
     <security mode="TransportWithMessageCredential"> 
     <message establishSecurityContext="false" 
      negotiateServiceCredential="true" 
       clientCredentialType="UserName" /> 
     </security> 
    </binding> 
</ws2007HttpBinding> 
<customBinding> 
    <binding name="FederationDuplexTcpMessageSecurityBinding"> 
     <reliableSession /> 
     <security authenticationMode="SecureConversation"> 
      <secureConversationBootstrap authenticationMode="IssuedTokenForSslNegotiated"> 
       <issuedTokenParameters> 
        <issuer address="https://IdentityServer.domain/issue/wstrust/mixed/username" binding="ws2007HttpBinding" bindingConfiguration="ws" /> 
        <issuerMetadata address="https://IdentityServer.domain/issue/wstrust/mex" /> 
        <additionalRequestParameters> 
         <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> 
          <EndpointReference xmlns="http://www.w3.org/2005/08/addressing"> 
           <Address>RelyingParty.com</Address> 
          </EndpointReference> 
         </wsp:AppliesTo> 
        </additionalRequestParameters> 
       </issuedTokenParameters> 
      </secureConversationBootstrap> 
     </security> 
    <tcpTransport /> 
    </binding> 
</customBinding> 

ऊपर कोड स्निपेट दिखाता है कि आप एक सुरक्षित बातचीत और एक secureConversationBootstrap का उपयोग कर फ़ेडरेटेड सुरक्षा का ख्याल रखना एक डुप्लेक्स चैनल बना सकते हैं।

इसका एक फायदा यह है कि आप अपनी खुद की भरोसेमंद पार्टी यूआरआई भी सेट कर सकते हैं, इसलिए आपको डब्ल्यूसीएफ एंडपॉइंट को अपने भरोसेमंद पार्टी के पहचानकर्ता के रूप में उपयोग करने की आवश्यकता नहीं है।

तुम भी इस प्रकार WIF सक्षम करने के लिए संघीय सेवा व्यवहार स्थापित करने के लिए की आवश्यकता होगी (useIdentityConfiguration महत्वपूर्ण है, के रूप में यह पर WIF बदल जाता है):

<behavior name="FederatedServiceBehaviour"> 
    <clientCredentials useIdentityConfiguration="true" supportInteractive="false" > 
    <serviceCertificate/> 
    </clientCredentials> 
</behavior> 

सेवा समाप्ति बिंदु की स्थापना यहाँ प्रलेखित है: http://msdn.microsoft.com/en-us/library/cc668765(v=vs.110).aspx (एक डिग्री के लिए)

जहां तक ​​मैं देख सकता हूं कि डुप्लेक्सChannelFactory खुद को संदर्भ संदर्भ के माध्यम से जारी किए गए टोकन के साथ चैनल बनाने के लिए कोई विधि नहीं दिखाता है।

आशा है कि इससे मदद मिलती है!

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