在.NET应用程序中替换表单身份验证的方法

时间:2010-12-24 00:50:11

标签: asp.net authentication forms-authentication iprincipal

我的问题是关于一种方法,我正在寻找帮助我开发解决方案的提示或链接。我有一个.NET 4.0 Web表单应用程序,它使用用户和密码的aspnetdb SQL数据库进行Forms身份验证。该应用程序的一项新功能是使用单点登录的身份验证机制,允许数千名新用户访问。基本上,当用户通过新的单点登录方法登录时,我将能够将他们识别为具有角色的合法用户。

所以我会有类似 HttpContext.Current.Session [“email_of_authenticated_user”] (他们的身份)和 HttpContext.Current.Session [“role_of_authenticated_user”] (他们的角色)。

重要的是,我不一定要在aspnetdb数据库中冗余地维护这些用户和角色,这将被淘汰,但我想要使用上面的会话对象允许用户通过通过应用程序,就好像他们正在通过表单身份验证。我不认为CustomRoleProviders或CustomMemberProviders是有用的,因为它们不允许创建会话级用户。

所以我的问题是如何使用会话级用户和角色,我必须“模仿”所有表单身份验证的好处,如强制执行:

[System.Security.Permissions.PrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Role = "Student")]

<authorization>
    <allow users="wilma, barney" />
</authorization>

感谢您的任何指示。

1 个答案:

答案 0 :(得分:3)

我认为你将Forms AuthenticationSqlMembershipProvider混为一谈。

表单身份验证是ASP.NET通用授权和验证用户的手段。它没有具体说明如何完成。它只提供了一种方法,一旦通过身份验证,应用程序就可以通过保存为cookie的“票证”系统在整个应用程序中使用这些凭据。

基本上,Windows中只有两种身份验证,即表单身份验证和Windows身份验证。由于您的新方法不是基于Windows的,因此您必须使用表单身份验证(除非您只是忽略内置于asp.net中的内容并自行滚动所有内容,这是一种愚蠢的行为)。

您可能希望查看Windows Identity Foundation,因为它提供了可插入的身份架构,包括各种基于Web的单点登录方法。