अपने विवरण है, उससे लगता है कि आपने कुछ सौंप पहचान मॉडल का उपयोग कर रहे हैं । यही है, उपयोगकर्ता वेब एप्लिकेशन में साइन इन करता है और जब वेब एप्लिकेशन वेब एपीआई सेवा को आमंत्रित करता है, तो यह वर्तमान में लॉग इन उपयोगकर्ता की पहचान का उपयोग करता है।
यदि ऐसा है, तो आपको "बूटस्ट्रैप टोकन" को सहेजने के लिए WIF को कॉन्फ़िगर करने की आवश्यकता है। इसका प्रभाव यह है कि मूल सुरक्षा टोकन वर्तमान दावों की संपत्ति पर एक संपत्ति के रूप में उपलब्ध है। इसके बाद आप वेब एपीआई सेवा कॉल के अनुरोध के प्राधिकरण शीर्षलेख को सेट करने के लिए इसका उपयोग कर सकते हैं।
नेट 4.5 में यह चालू करने के लिए आप सही पर WIF तत्व पर saveBootstrapContext विशेषता निर्धारित:
<system.identityModel>
<identityConfiguration saveBootstrapContext="true">
...
नेट 4 के लिए, config इस lke दिखता है:
<microsoft.identityModel>
<service saveBootstrapTokens="true">
...
फिर वेब एप्लिकेशन से इसे एक्सेस करने के लिए आप ऐसा कुछ करते हैं (इस पर निर्भर करता है कि आपके पास कितनी पहचान है) यह वेब एपीआई को कॉल करने वाले नियंत्रक में है। .NET 4.5:
SecurityToken token = (User as ClaimsPrincipal).Identities[0].BootstrapContext;
के लिए।नेट 4:
SecurityToken token = (User as ClaimsPrincipal).Identities[0].BootstrapToken;
मूल सुरक्षा टोकन कर सकते हैं प्राप्त करने के बाद, आप अब एक अधिकृत हेडर के रूप में वेब एपीआई के लिए कॉल करने के लिए संलग्न कर दें। आम तौर पर इसे बेयरर टोकन के रूप में जोड़ा जाएगा, जो कि यह कहने का एक शानदार तरीका है कि आप हेडर वैल्यू की शुरुआत में "भालू" शब्द जोड़ते हैं। टोकन संलग्न करने के लिए, कुछ इस तरह करते हैं:
WebClient request = new WebClient();
request.Headers.Add("Authorization","bearer " + tokenAsString);
नोट: आम तौर पर आप को एन्क्रिप्ट करेगा या बेस 64 पारगमन में टोकन मान सांकेतिक शब्दों में बदलना करने के बजाय कच्चे स्ट्रिंग देते हैं, खासकर अगर यह XML है, क्योंकि कुछ व्यवस्थाएं होगा एक्सएमएल को पारगमन में उलझाएं।
टोकन को एक स्ट्रिंग में कनवर्ट करने के लिए, आपको उपयोगकर्ता को SecurityTokenHandler
से प्राप्त कक्षा होना चाहिए, इनमें से कुछ मानक मानक कार्यकर्ताओं में कुछ मानक टोकन प्रकारों को संभालने के लिए शामिल हैं। बाकी सेवाओं के लिए, JSON वेब टोकन एक लोकप्रिय प्रारूप है और इसमें यहां
https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/
के लिए कोई हैंडलर युक्त आप कुछ अन्य टोकन प्रकार का उपयोग कर रहे हैं, तो एक NuGet पैकेज है, आप अपने खुद हैंडलर लिख सकते हैं (यह वास्तव में मुश्किल नहीं है) या वेब पर खोजने की कोशिश करें।
नेट 4.5 में SecurityTokenHandler
कक्षा में WriteToken(SecurityToken)
विधि है जो टोकन को स्ट्रिंग के रूप में लौटाती है। WIF के पुराने संस्करणों में केवल WriteToken का XML संस्करण समर्थित था।
कई नमूने दिखा रहे हैं कि सर्वर पक्ष पर आरईएसटी सेवाओं के लिए सुरक्षा टोकन हैंडलर का उपयोग कैसे करें। एक अच्छा उदाहरण यहाँ
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc/view/Discussions#content
सभी प्रासंगिक कोड global.asax.cs फ़ाइल में निहित है है।
का उपयोग कर सकते हैं इसे कैसे संलग्न करें और वेब एपीआई कॉल करें ..... क्या आप एक उदाहरण .... या नमूना कोड प्रदान कर सकते हैं? –
क्या आप कृपया जावास्क्रिप्ट का उपयोग करके इसे कॉल करने का एक उदाहरण भी प्रदान कर सकते हैं (हम इस मामले में टोकन कैसे संलग्न कर सकते हैं), आपके उत्तर से यह स्पष्ट नहीं है कि सेवा पक्ष में कॉन्फ़िगर/कोड क्या होना चाहिए .....? –
सेवा समाप्त होने पर भी ईमेल आईडी, उपयोगकर्ता आईडी इत्यादि जैसे दावे के तत्वों को देखने के लिए .... जो आमतौर पर दावों को उत्पन्न करते समय एसटीएस द्वारा जोड़ा जा रहा है ..... –