我正在编写将使用Active Directory身份验证的ASP.NET MVC应用程序。
我不希望用户必须登录我希望能够通过域凭据对用户进行身份验证并为其分配角色。
我希望能够使用某种管理视图为AD用户和AD组分配角色。
有没有资源可以解决这个问题?
最重要的是,我希望能够将域凭据与我的应用程序中的User表链接(它本质上是一个Helpdesk Ticket应用程序)。如何成功将应用程序数据库中的用户链接到Windows身份验证帐户?
由于
如果没有意义,请询问澄清。
MVC 4 Intranet Authentication with Custom Roles
这似乎是一个很好的资源,但任何建议都会很棒
答案 0 :(得分:3)
Windows身份验证将验证AD上是否存在用户,如果要验证用户表中是否存在用户,则可以使用CustomAttribute(我使用EntityFramework):
public class AuthorizeDB : AuthorizeAttribute
{
ProjectDB db = new ProjectDB();
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
return false;
var name = httpContext.User.Identity.Name;
return db.Users.FirstOrDefault(u => u.UserName == name) != null;
}
}
并使用[AuthorizeDB]
装饰您的类,或者为整个应用程序设置它。 User.Identity.Name
将以Domain\Username
如果您在应用程序中使用自定义角色,则应与任何其他类型的身份验证大致相同。将用户与角色链接,然后验证他们所处的角色。