ASP.NET应用程序中的Windows身份验证

时间:2012-09-13 13:20:47

标签: windows active-directory asp.net

我们正在尝试将旧的Intranet ASP .NET Web应用程序从基于“Forms”的身份验证迁移到基于“Windows”的身份验证,以便用户在登录PC后无需再次输入凭据,我们只是想要读取当前登录的身份,并使用它来验证和授权应用程序中的用户。

在ASP .NET中进行Windows身份验证非常简单,我想检查的是如何在AD或ADAM中管理用户及其组。

同一个用户可以拥有Dev,UAT,LT,Prod等同一应用程序的多个环境的权限,因此需要在多个环境(不同的URL)中对同一个域帐户进行身份验证。此外,一旦在环境中进行身份验证,用户可能属于多个角色,这些角色决定了用户可以执行的操作。

我正在寻找一些关于如何在AD中设置此结构的建议,我们正考虑在AD中为App_Dev,App_UAT,App_Prod等不同的环境创建组,并在每个环境中都有嵌套组对于每个环境中App_Dev \ Role1,App_Dev \ Role2,App_UAT \ Role1等应用程序中的不同角色,并在其中添加用户。

你们有什么想法?

1 个答案:

答案 0 :(得分:0)

您必须记住,身份验证和授权是两回事。你已将它们组合在你的逻辑中。

例如,您的身份验证机制是AD。所以,是的,使用AD来验证凭据和组成员身份,以确保它们可以使用特定实例进行身份验证。

但是,您仍然可以使用经典的RolesProvider并使用SQL后端将角色和用户存储到数据库中每个实例的角色分配中。这很简单,并且使用ASP.NET的内置功能,而无需过度使用AD中的创建组。您可以在网上对ASP.NET AD Authentication and SQL Roles Provider进行各种搜索。我认为ScottGu甚至有一篇关于如何做的旧文章。

最后,您在此处描述的不是SSO或Single Sign-On,我会更新您的问题以反映这一点。 SSO指的是创建在许多应用程序中受信任和共享的令牌。您似乎并不需要提供示例,但如果您这样做,您将调查ADFS和Windows Identity Foundation(WIF)。仅仅因为您使用AD并不意味着您拥有SSO,它只是意味着您拥有一个身份验证提供程序,但您仍然没有基于令牌的系统,实际上只需要对中央身份验证服务的初始身份验证和授权请求,通常ADFS。