如果我使用活动目录作为用户存储,我如何将数据库中的信息与特定用户相关联?我应该在对它们进行身份验证后将它们插入数据库(这对我来说似乎是多余的)还是仅将广告成员资格提供程序用于身份验证并且我应该使用 SQL 成员资格提供程序?
问问题
442 次
1 回答
3
成员资格提供者只关心身份验证。授权(与身份验证不同)由您的逻辑执行,可选择使用角色提供程序。
您可以将 Active Directory 用于角色,但您需要使用外部实现,因为 ASP.NET 不包括开箱即用的实现(例如http://www.codeproject.com/Articles/28546/Active -目录-角色-提供者)。
如果您将 AD 用于成员资格,但想要跟踪数据库中的用户,那么您将需要使用 AD 用户的objectGUID
属性,因为它既是唯一的又是不可变的,其他属性像cn
并且objectSid
是唯一的但不是不可变的。
就我个人而言,我不会在我从事的任何 ASP.NET 项目中使用 Membership/Roles/Profiles 功能,因为它们需要特殊处理,这会在您的应用程序中创建一个逻辑上独立的关注点,该关注点并不总是与您的应用程序中的所有其他内容相结合,尤其是如果您为实体使用 ORM。即使您实现自己的提供程序以避免应用程序内部实体模型的复杂性,您仍然会遇到问题,因为该Membership
对象向您的模型公开了一个新接口,您仍然需要在任何现有系统之上实现该接口以进行您拥有的用户管理。因此,我只建议对超基本网站使用 Membership/Roles/Profiles。
于 2013-03-25T22:15:35.137 回答