如何针对Active Directory验证用户名和密码?我只是想检查用户名和密码是否正确.
创建一个基于Windows域用户进行身份验证的ASP.NET MVC应用程序很容易.创建一个使用Entity Framework存储的个人帐户也很容易.事实上,两者都有项目模板.
但我想利用BOTH各种认证在同一应用程序.我试图结合两个项目模板的代码.我在Startup.Auth.cs中遇到问题.
// from "Individual Accounts" template
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Run Code Online (Sandbox Code Playgroud)
中间件中存在cookie身份验证似乎导致域身份变为未经身份验证.如果我采用此行,域身份验证将起作用.但没有它,我似乎无法支持个人用户帐户.
我已经下载了katana项目源代码并检查了CookieAuthenticationHandler.cs,但我不太明白它是如何在OWIN管道的上下文中工作的.
如何使用ASP.net身份框架允许我的应用程序从Windows域或特定于应用程序的用户存储中验证用户?
c# asp.net-mvc claims-based-identity asp.net-mvc-5 asp.net-identity
我已经阅读了关于这个主题的几个问题,比如这里,这里,这里和这里 ; 但在我的案例中没有一个提供了有效的解决方案.
我想做的事:
为仅由我们自己的员工使用的Web应用程序实施Windows身份验证.这样他们就不需要登录应用程序,但已经通过登录Windows进行身份验证.
此外,我需要根据用户可能分配到的Active Directory安全组来限制应用程序的某些区域.
所以我希望能够装饰Controllers/Actions
[Authorize(Roles="SomeRole")]
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
我有
<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)
在我的web.config中.我<roleManager>在上面链接的一些帖子中添加了几个a的排列.目前我有这个角色经理
<roleManager defaultProvider="WindowsProvider"
enabled="true"
cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
在这篇文章中找到.
事实上,如果我装饰一个控制器[Authorize],我可以很好地访问它.
然而:
我可以在网络上的用户设置中看到,我是名为"IT"的AD安全组的成员.但是,如果我装饰相同的控制器,[Authorize(Roles="IT")]我得到的是由asp.net开发服务器为未授权的401服务的空白屏幕. 这是出乎意料的. 我认为我应该能够查看页面,因为我登录到Windows并且是"IT"组的一部分.
我在这个主题上发现的大部分内容都让我觉得很难完成我想要做的事情,但我在这里显然遗漏了一些东西.