मेरा Google foo वास्तव में कमजोर था। जवाब मेरे प्रश्न के लिंक के ठीक पीछे है। तो अगर किसी के पास एक ही प्रश्न है तो this blog के कुछ लिंक यहां दिए गए हैं।
सबसे पहले, आप को समझने के लिए "का दावा है कि सामान सेट" प्रयास करना चाहिए:
,210
उसके बाद, आप पता करने की जरूरत है, जहां दावा सेट से आते हैं: इस ज्ञान के साथ
सशस्त्र, यह वास्तव में काफी आसान हो जाता है।
अगर मैं इसे सही ढंग से समझते हैं, बुनियादी कार्यप्रवाह कुछ इस तरह होगा:
- ग्राहक एक
SecurityToken
एक SecurityTokenProvider
- क्लाइंट का उपयोग कर बनाता है serializes
SecurityToken
एक SecurityTokenSerializer
- सर्वर का उपयोग
SecurityToken
deserializes का उपयोग कर SecurityTokenSerializer
- सर्वर एस
SecurityTokenAuthenticator
का उपयोग कर बनाता है
- सर्वर बनाता
AuthorizationContext
IAuthorizationPolicy
रों से
- हो गया
उदाहरण:
// Create the SecurityTokenProvider
var p = new UserNameSecurityTokenProvider("username", "password");
// Get the SecurityToken from the SecurityTokenProvider
var t = p.GetToken(TimeSpan.FromSeconds(1.0)) as UserNameSecurityToken;
// ... transmit SecurityToken to server ...
// Create the SecurityTokenAuthenticator
var a = new CustomUserNameSecurityTokenAuthenticator(
UserNamePasswordValidator.None);
// Create IAuthorizationPolicies from SecurityToken
var i = a.ValidateToken(t);
// Create AuthorizationContext from IAuthorizationPolicies
var c = AuthorizationContext.CreateDefaultAuthorizationContext(i);
ShowClaims(c.ClaimSets);
X509SecurityToken
के लिए एक X509SecurityTokenProvider
/Authenticator
का उपयोग करें। WindowsSecurityToken
के लिए WindowsSecurityTokenAuthenticator
है लेकिन प्रदाता नहीं है;
var t = new WindowsSecurityToken(WindowsIdentity.GetCurrent());
यह काफी अच्छी तरह से काम करता है: के बजाय, WindowsSecurityToken
निर्माता का उपयोग करें। एकमात्र चीज जो मैंने अभी तक छोड़ी है वह टोकन क्रमबद्धता है। एक SecurityTokenSerializer
वर्ग है जिसमें .NET ढांचे में एक कार्यान्वयन है: WSSecurityTokenSerializer
कक्षा जो डब्ल्यूसीएफ के साथ आता है।
Serializing UserNameSecurityToken
और X509SecurityToken
एक आकर्षण की तरह काम करता है (अक्रमांकन की कोशिश की है नहीं), लेकिन WindowsSecurityToken
रों जाहिरा तौर पर serializer द्वारा समर्थित नहीं हैं। यह मुझे दो प्रमाणीकरण विधियों के साथ छोड़ देता है जो मेरे पास पहले से ही हैं (प्रमाणपत्र और उपयोगकर्ता नाम/पासवर्ड) और, जैसा कि मैं AuthorizationContext
वैसे भी नहीं चाहता था, मैं अपने पास जो भी रखता हूं उसके साथ रहूंगा :)
यदि कोई दिलचस्पी लेता है, तो मुझे यकीन नहीं है कि सुरक्षा टोकन क्लाइंट साइड पर बनाया जाना चाहिए और सर्वर पर प्रेषित होना चाहिए। X.50 9 सुरक्षा के लिए सर्वर के साथ एसएसएलस्ट्रीम शुरू करने और सर्वर प्रमाण पत्र से X509SecurityToken बनाने के लिए और अधिक समझदारी होती है, विंडोज सुरक्षा के लिए WindowsSecurityToken को वार्तालाप से बनाया जा सकता है। ReemoteIdentity यदि NegotiateStream का उपयोग किया जाता है। उपयोगकर्ता नाम/पासवर्ड सुरक्षा के लिए, ज़ाहिर है, उपयोगकर्ता नाम और पासवर्ड प्रसारित करने की आवश्यकता होगी। – dtb