मैं डब्ल्यूसीएफ सेवा में रोल मैनेजर का उपयोग कैसे कर सकता हूं?मैं डब्ल्यूसीएफ सेवा में रोल मैनेजर का उपयोग कैसे कर सकता हूं?
मेरे .NET एप्लिकेशन में, मैं [Authorize(Roles=)]
टैग के साथ कक्षा या विधि को प्रतिबंधित कर सकता हूं। मैं इसे अपनी डब्ल्यूसीएफ सेवा के लिए कैसे सक्षम कर सकता हूं?
मैं वर्तमान में प्रत्येक समाप्ति बिंदु निम्नलिखित बाध्यकारी सेट है:
<webHttpBinding>
<binding name="TransportSecurity" maxReceivedMessageSize="5242880">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
जब से मैं में उपयोगकर्ता लॉग है और प्राचार्य के साथ कुकी प्राप्त करना चाहते हैं, मैं clientCredentialType
का एक और प्रकार को यह बदलने के लिए की जरूरत है ?
संपादित करें 1:
यह बाकी सोप का उपयोग कर, नहीं है। यह भी ध्यान रखना है कि यह महत्वपूर्ण है कि यह मोबाइल उपकरणों (एंड्रॉइड, आईफोन) के साथ काम करता है और सत्र बनाए रखने के लिए कुकीज़ का उपयोग कर सकता है। अब तक, मैं इस काम के प्राप्त करने में असमर्थ किया गया है, निम्नलिखित कोड/config का उपयोग कर:
कॉन्फ़िग फ़ाइल:
<roleManager enabled="true" defaultProvider="ActiveDirectoryRoleProvider" cacheRolesInCookie="true" cookieName="RoleCookie" cookiePath="/" cookieTimeout="30" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All">
<providers>
<clear />
<add name="ActiveDirectoryRoleProvider" connectionStringName="ADServices" connectionUsername="" connectionPassword="" attributeMapUsername="sAMAccountName" type="" />
</providers>
</roleManager>
<membership defaultProvider="MembershipADProvider">
<providers>
<add name="MembershipADProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="" connectionStringName="ADServices" connectionUsername="" connectionPassword="" attributeMapUsername="sAMAccountName" />
</providers>
</membership>
<bindings>
<webHttpBinding> <!-- webHttpBinding is for REST -->
<binding name="TransportSecurity" maxReceivedMessageSize="5242880">
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
<serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="ActiveDirectoryRoleProvider" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="MembershipADProvider" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
कोड
public void SignIn2(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
// put the attributes in a string for userdata
string userData = "";
// create the ticket
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
userName,
DateTime.Now,
DateTime.Now.AddMinutes(240),
createPersistentCookie,
userData);
// Now encrypt the ticket.
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
// Create a cookie and add the encrypted ticket to the cookie as data.
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
// add the cookie
HttpContext.Current.Response.Cookies.Add(authCookie);
}
अब प्रधानाचार्य का उपयोग कर अनुमति, मुझे SecurityException
मिलती है (मुझे पता है कि भूमिका सर्वर पर मान्य है)
[PrincipalPermission(SecurityAction.Demand, Role = Constants.RoleUser)]
public Message TestRoles()
{
var context = NetworkHelper.GetWebOperationContext();
return context.CreateTextResponse("You have successfully activated the endpoint.");
}
क्या मुझे यहां एक महत्वपूर्ण कदम याद आ रहा है?
मुझे लगता है, मैंने अभी देखा है कि 'प्राधिकरण' विशेषता एमवीसी केंद्रित है। मुझे 'प्रिंसिपल प्रिमिशन' का उपयोग करना होगा, मुझे लगता है कि यह काम एक समान फैशन में है? – Cody
+1: बढ़िया जवाब! स्पष्ट रूप से माइक्रोसॉफ्ट ने डब्ल्यूसीएफ के साथ भूमिका प्रदाताओं का उपयोग करने के बारे में एमएसडीएन पर एक लेख के साथ इस विषय का पालन किया है: http://msdn.microsoft.com/en-us/library/aa702542.aspx – reSPAWNed
हाय। क्या आप इस प्रश्न पर एक नज़र डालें : https: //stackoverflow.com/questions/45770217/my-customauthorizationpolicy-evaluate-method-never-fires –