मैं एक प्रणाली ADFS और दावों के साथ काम करने का निर्माण करने की कोशिश कर रहा हूँ नहीं बना सकते। फिलहाल, यह सिर्फ एक "खिलौना" कार्यान्वयन है।बनाना प्रतिनिधिमंडल टोकन - एक SecurityTokenService
मैंने एक बहुत ही सरल एमवीसी वेब एप्लिकेशन बनाया है, इसे एक एडीएफएस 2.0 सर्वर से बात करने के लिए विजुअल स्टूडियो में "पहचान और एक्सेस ..." विज़ार्ड का उपयोग करके सेट अप किया है, और इसे आईआईएस सर्वर पर तैनात किया है। सभी ठीक काम करते हैं, और मैं प्राप्त दावों की जांच और सूची कर सकता हूं।
अगला चरण एक वेब एपीआई आधारित आरईएसटी सेवा (एमवीसी अनुप्रयोग पर निर्भर करने वाली बैक-एंड सेवाओं का प्रतिनिधित्व करने) का निर्माण करना है, इसलिए मैं प्रमाण-पत्र उस बैक-एंड सर्वर पर पास करना चाहता हूं ताकि वह उपयुक्त प्राधिकरण निर्णय ले सकते हैं।
तो पहला कदम मेरे लिए प्रतिनिधिमंडल टोकन बनाने के लिए है (और फिर, उम्मीद है कि, बाकी कॉल करने के लिए HttpClient
कक्षा के संदर्भ में इसके साथ क्या करना है)। मैं इस मिल गया है:
//We need to take the bootstrap token and create an appropriate ActAs token
var rst = new RequestSecurityToken
{
AppliesTo = new EndpointReference("https://other-iis.example.com/Rest"),
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Symmetric,
ActAs = new SecurityTokenElement(((BootstrapContext)((ClaimsIdentity)User.Identity).BootstrapContext).SecurityToken)
};
var sts = new SecurityTokenService(); //This line isn't valid
var resp = sts.Issue(System.Threading.Thread.CurrentPrincipal as ClaimsPrincipal, rst);
लेकिन, मुद्दा यह है कि SecurityTokenService
सार है। मैं किसी भी प्रकार या तो System.IdentityModel
है और न ही System.IdentityModel.Services
में इस वर्ग से प्राप्त नहीं मिल रहा है, और इसके बाद के संस्करण ADFS सर्वर जो मैं कुछ बिंदु पर प्रदान करने के लिए स्पष्ट रूप से की आवश्यकता होगी के लिए किसी भी संदर्भ शामिल नहीं है।
बेशक, मैं पूरी तरह से गलत मार्ग भी नीचे जा रहा हूं, या सिर्फ मामूली ठोकर खा रहा हूं और दूरी में बहुत अधिक लूमिंग नहीं देख रहा हूं, इसलिए उस पर कोई सलाह भी सराहना की जाएगी।
मैं उदाहरण के लिए, Identity Delegation Scenario के लिए, देखा है, लेकिन वह CreateChannelActingAs
है, जो मुझे नहीं लगता कि काम करने के लिए जब मैं एक आराम सेवा करने के लिए बात कर रहा हूँ वाला है का उपयोग करता है (यह या होगा?), और यह भी .NET 4.5 पर लागू प्रतीत नहीं होता है।
मैं एक एसटीएस लागू नहीं करना चाहता - मैं एडीएफएस से बात करना चाहता हूं और इसे एक प्रतिनिधिमंडल टोकन जारी करने के लिए प्राप्त करना चाहता हूं - मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है। –