Active Directory'ye karşı ASP.NET MVC'de kullanıcı ve grupları kullanarak kimlik doğrulamayı deniyorum.ASP .NET MVC Forms Yetkilendirme Active Directory gruplarıyla
Ben (hesap sınıfında hariç) tüm sınıfları Aşağıdaki öznitelik koyduk:
[Authorize (Roles="SubcontractDB Users")]
Bu grup OU = Area-> OU = groups-> OU = Şirket-> CN = altında bulunan Aktif dizinde SubcontractDB. Ben de ben yaptığımız girişimlerden web.config'de kurulum için bir roleManager gerek farz ediyorum şu:
<roleManager defaultProvider="ADRoleProvider">
<providers>
<clear />
<add name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" />
</providers>
</roleManager>
Benim bağlantı dizesidir: ben yapıyorum
Açıkçası<add name="ADConnectionString"
connectionString="LDAP://blah.com:389/DC=blah,DC=wateva,DC=com"/>
Bu işe yaramazsa yanlış. Tek yapmak istediğim, AD'deki belirli bir grubun üyesi olan kullanıcılara erişim sağlamaktır. Sadece olabilir: Aşağıdaki yukarıdaki denetleyicileri veya fonksiyonlarını
Using Application.Filters;
...
[AuthorizeAD(Groups = "groupname")]
NB
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;
}
}
}
Sonra basitçe kullanabilirsiniz:
mi size web.config aşağıdakileri ekleyin gerekir
AuthorizeAttribute
ile bu kullanmak için Yetkilendirirken kimlik sorulmasını engellemenin bir yolu var mı? Bir intranet sitesinde windows auth kullanıyorum ve AD grubuna göre güvenli olması ve kullanıcıdan kimlik bilgilerini istememesi gerekir. – Fireworks