2012-04-20 19 views
5

मैंने dotnetopenauth का उपयोग कर एक OAuth2.0 प्रमाणीकरण सर्वर बनाया है जो कॉलर को प्रमाणीकरण, प्रमाणीकरण और पहुंच असाइन करने का प्रबंधन करेगा। कॉलर संसाधन सर्वर पर एपीआई (webservices) तक पहुंचने के लिए एक्सेस टोकन का उपयोग करेगा। तो संसाधन सर्वर में dotnetopenauth द्वारा प्रदान की नमूना, एपीआई का उपयोग कर WCF द्वारा OAuthAuthorizationManagerOAuth2.0 के साथ संसाधन सर्वर के रूप में ServiceStack का उपयोग करके सुरक्षित एपीआई कैसे बनाएं?

प्रमाणीकृत किया जा सकता है ServiceStack का उपयोग कर संसाधन सर्वर में मेरी एपीआई के निर्माण के लिए builded का पालन करें, कैसे प्रमाणीकरण प्रक्रिया है कि आधारित भेजे api अनुरोध की पुष्टि के निर्माण के लिए असाइन OAuth2.0 पहुंच टोकन पर? कार्यक्षमता OAuthAuthorizationManager को dotnetopenid नमूना में समान होना चाहिए और लॉगिन सत्र पर आधारित नहीं होना चाहिए।

उत्तर

4

बस कुछ अद्यतन

मैं AuthenticateAttribute या RequiredRoleAttributeServiceStack.ServiceInterface से उपयोग नहीं किया।

मैं AuthenticateAttribute और RequiredRoleAttribute द्वारा प्रदान किए गए कार्यों को प्रतिस्थापित करने के लिए 2 कस्टम RequestFilterAttribute बना देता हूं।

प्रत्येक कस्टम RequestFilterAttribute की Execute विधि में, मैं एक्सेस टोकन को सत्यापित करने के लिए dotnetopenauth में विधि का उपयोग कर रहा हूं।

//httpReq==req from Execute(IHttpRequest req, IHttpResponse res, object requestDto) 

निम्नलिखित के रूप में पहुँच टोकन सत्यापन के लिए कोड, दोनों servicestack से प्रासंगिक दस्तावेज का संदर्भ और अधिक जानकारी के लिए dotnetopenauth। ResourceServer से dotnetopenauth

HttpRequestBase reqBase = new HttpRequestWrapper((System.Web.HttpRequest)httpReq.OriginalRequest); 

var resourceServer = new ResourceServer(new StandardAccessTokenAnalyzer(AuthorizationServerPublicKey, ResourceServerPrivateKey)); 

IPrincipal ip = null; 
resourceServer.VerifyAccess(reqBase, out ip); 

वर्ग तो ipnull तो है प्रमाणीकृत नहीं, अगर नहीं null, आने वाली अनुरोध वैध है और भूमिका की जांच करने के उदा ip का उपयोग कर सकते है ip.IsInRole(requiredRole)

मुझे यकीन नहीं है कि यह जांच करने का सही तरीका है या नहीं, लेकिन यह मेरे लिए काम करता है। किसी भी बेहतर समाधान का स्वागत है।

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

  • कोई संबंधित समस्या नहीं^_^