के साथ प्राधिकरण सक्रिय निर्देशिका के विरुद्ध एएसपी.नेट एमवीसी में उपयोगकर्ताओं और समूहों का उपयोग करके प्रमाणित करने का प्रयास कर रहा हूं।एएसपी .NET एमवीसी फॉर्म सक्रिय निर्देशिका समूहों
मैं (खाते वर्ग को छोड़कर) मेरी सभी वर्गों पर निम्न विशेषता डाल दिया है:
[Authorize (Roles="SubcontractDB Users")]
इस समूह के तहत OU = Area-> OU = समूहों> OU = कंपनी> सीएन = पाया जाता है सक्रिय निर्देशिका में SubcontractDB। मैं यह सोचते हैं रहा हूँ मैं भी web.config जो मैं के रूप में करने का प्रयास कर चुके में स्थापना के लिए एक RoleManager जरूरत है इस प्रकार है:
<roleManager defaultProvider="ADRoleProvider">
<providers>
<clear />
<add name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" />
</providers>
</roleManager>
मेरे कनेक्शन स्ट्रिंग है:
<add name="ADConnectionString"
connectionString="LDAP://blah.com:389/DC=blah,DC=wateva,DC=com"/>
जाहिर है मैं इसे कर रहा हूँ गलत है क्योंकि यह काम नहीं करता है। मैं बस इतना करना चाहता हूं कि उन उपयोगकर्ताओं तक पहुंच की अनुमति दें जो एडी में किसी निश्चित समूह के सदस्य हैं। बस सकता है आप:
namespace Application.Filters
{
public class AuthorizeADAttribute : AuthorizeAttribute
{
public string Groups { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext))
{
/* Return true immediately if the authorization is not
locked down to any particular AD group */
if (String.IsNullOrEmpty(Groups))
return true;
// Get the AD groups
var groups = Groups.Split(',').ToList<string>();
// Verify that the user is in the given AD group (if any)
var context = new PrincipalContext(ContextType.Domain, "server");
var userPrincipal = UserPrincipal.FindByIdentity(context,
IdentityType.SamAccountName,
httpContext.User.Identity.Name);
foreach (var group in groups)
if (userPrincipal.IsMemberOf(context, IdentityType.Name, group))
return true;
}
return false;
}
}
}
और फिर मैं बस का उपयोग कर सकते निम्नलिखित ऊपर नियंत्रकों या कार्यों
Using Application.Filters;
...
[AuthorizeAD(Groups = "groupname")]
एनबी:
है प्राधिकरण का उपयोग करते समय प्रमाण-पत्रों के लिए पूछे जाने से रोकने का कोई तरीका है? मैं इंट्रानेट साइट पर विंडोज ऑथ का उपयोग कर रहा हूं और एडी समूह द्वारा सुरक्षित करने की आवश्यकता है और उपयोगकर्ता को प्रमाण-पत्र के लिए संकेत नहीं देता हूं। – Fireworks