2015-07-01 7 views
5

ठीक है इसलिए मेरे पास एक वेबएपीआई एथ सेवा है जिसका उपयोग/टोकन अनुरोध के लिए किया जाता है और क्लाइंट को बेयरर टोकन देता है, मैंने गुणों में एक ऐपआईडी और एपी कुंजी जोड़ दी है, इसलिए मैं वापसएकाधिक प्राधिकरण योजनाओं (एचएमएसी और ओएटीएच) का उपयोग

{ 
"access_token": "...", 
"token_type": "bearer", 
"expires_in": 86399, 
"dm:appid": "1", 
"dm:apikey": "...", 
".issued": "Wed, 01 Jul 2015 20:46:45 GMT", 
".expires": "Thu, 02 Jul 2015 20:46:45 GMT" 
} 

AppId और एपीआई कुंजी ग्राहक द्वारा इस्तेमाल किया जाना चाहिए करने के प्रत्येक अनुरोध के लिए एक HMAC SHA256 हस्ताक्षर उत्पन्न करने के।

मेरी नियंत्रक पर मैं अधिकृत विशेषता का इस्तेमाल किया और एक HmacAuthentication विशेषता है जो IAuthenticationFilter लागू बनाया है

[RoutePrefix("api/account")] 
[Authorize] 
[HmacAuthentication] 
public class AccountController : ApiController 
{ 
    // rest of controller here 
} 

मुद्दा मेरे पास है कि इस नियंत्रक के लिए किसी भी अनुरोध Authorization: Bearer ... शीर्षक और HmacAuthentication विशेषता भी उम्मीद की उम्मीद जाएगा Authorization: amx शीर्षलेख।

अब मुझे पता है कि आप केवल एक प्राधिकरण हेडर रख सकते हैं तो मेरी quandry कैसे मैं HTTP को तोड़ने के बिना दोनों प्राधिकरण हेडर को लागू कर सकते है, किसी को भी

मैं इन उदाहरणों का पालन दोनों Owin OAuth और HMAC प्रमाणीकरण के उपयोग हासिल की है Taiseer Joudeh

Token Based Authentication using ASP.NET Web API 2, Owin, and Identity Secure ASP.NET Web API using API Key Authentication – HMAC Authentication

+0

मैं एक ऐसी ही स्थिति का सामना करना पड़ रहा है पर HMAC प्राधिकरण को लागू करने के द्वारा सुरक्षित हो सकता है। मैं दो प्राधिकरण शीर्षलेखों को काम करने की कोशिश करने के बजाय कस्टम हेडर का उपयोग करने पर विचार कर रहा हूं। क्या आप कुछ बेहतर के साथ आए हैं? – Glaucus

उत्तर

0

से यह एक लंबा है, जबकि एक जवाब के बिना और के बाद से मैं समाधान कर लिया है अपने मूल मुद्दे मैं मैं यहाँ समाधान पोस्ट चाहिए ताकि दूसरों को इस्तेमाल कर सकते हैं लगा दिया गया है इसका

अंत में, समाधान उनकी टिप्पणी में सुझाए गए @Glaucus जैसे कस्टम हेडर को जोड़ना था। मानक ओएथ प्रमाणीकरण के लिए मैंने Authorize हेडर विशेषता जोड़ा। एचएमएसी के लिए मेरी ज़रूरत को पूरा करने के लिए मैंने हेडर में X-Authorize विशेषता को जोड़ा और इसके बजाय इस हेडर का उपयोग करने के लिए मेरे कोड को संशोधित किया।

अब मैं एक वेबएपीआई सेवा OAuth टोकन द्वारा और अनुरोध

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