1

使用 Active Directory / Windows 集成身份验证是给定的。从开发的角度来看,使用它的最佳方式是什么?

是通过配置吗?

<location path="SecurePage.aspx">
    <system.web>
        <authorization>
            <allow roles="MyDomain\My Secure Users" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

是通过代码吗?

User.IsInRole(@"MyDomain\My Secure Users");

将其存储在数据库中是个好主意吗?那么授予新用户/组可以通过自定义应用程序完成吗?(我问这个是因为这是现状。)这个想法有什么问题?

4

3 回答 3

1

没有理由不能同时使用两者。通过 web.config 进行操作非常简单有效。始终在角色级别操作。您将代码版本用于配置不够用的场景,以及当您想要显示/隐藏 UI 的特定部分时(也有此控件的版本)。

更新 1:您已经支持角色,所以我假设数据库实际上是将角色映射到功能。Asp.net 内置支持和它支持的扩展点是在角色级别。如果您真的需要完全动态,那么您需要在代码级别进行检查(.config 对角色进行操作)。这是需要额外努力的问题,因此它更多地取决于系统的大小。在大多数情况下,坚持角色就足够了。

于 2009-03-03T17:52:20.667 回答
1

我个人更喜欢声明式方法(即基于位置的 web.config 方法)。这使得在必要时更容易进行更改,而无需重新部署代码。

在任何情况下,我都不建议像您在示例中那样使用静态字符串调用 User.IsInRole() ;如果您的身份验证没有更改,请使用 web.config 声明性方法。

走您在上一段中建议的路线非常好,但我只建议您的身份验证信息可能经常更改的情况,即 CMS 应用程序或类似的应用程序。

简而言之,我认为这个主题没有“最佳实践”。这真的取决于应用程序。

于 2009-03-03T17:52:56.827 回答
0

如果它不会有太大变化,请使用 web.config。

如果要更改很多,则使用代码方法,但使用数据库使其易于修改。

更多的是对编码实践的一般答案,而不是与安全性有关。

于 2009-03-03T17:41:51.800 回答