我有一个应用程序,我想在MVC应用程序中使用来自Identity的个人身份验证的活动目录 . 我的想法是,我希望每个用户都可以使用带有AD凭据的表单登录 . 并使用Identity管理角色和权限 . 我'm trying with Owin and now I can authenticate with AD. but I can' t为用户分配角色或声明,因为我的数据库中没有它们 . 如何将身份验证与AD和角色以及个人身份验证声明相结合?我用这个tuto进行AD身份验证 . http://tech.trailmax.info/2016/03/using-owin-and-active-directory-to-authenticate-users-in-asp-net-mvc-5-application/
1 回答
明白这篇文章是旧的;但是,想分享我为了让它发挥作用所做的一切 . 基本思想是通过AD进行身份验证 . 然后在Identity中复制凭据并将现有Identity角色应用于新登录 . 但是要明白,如果系统需要更改AD密码,这将导致问题 . AD的密码不会使用此代码更新Identity .
其他需要考虑的事情是使用AD的组和角色而不是Identity .
我从一个实现OWIN和Identity 2.0的应用程序开始 . 然后,我按照上面引用的教程添加AD身份验证 . 自从我开始使用Identity和OWIN以来,所有的登录代码都已到位 .
我引用了System.DirectoryServices.AccountManagement
创建了他的AdAuthenticationService类
我的LoginController代码存在于AccountController中 . 我在验证模型之后和身份验证代码之前,将以下代码放入公共异步任务登录(LoginViewModel模型,字符串returnUrl) . 请注意,我在其代码块中删除了返回 . 如果AD身份验证有效,我希望它继续通过身份验证 . 如果没有,它将在返回登录视图时列出所有“错误” .
陷阱是:
在IdentityConfig.cs文件中没有符合AD密码验证标准的密码验证 .
没有将我的AppPool标识设置为LocalSystem .
共享视图_LoginPartial.cshtml和_Layout.cshtml已经正确编码 .