【问题标题】:Basic questions on setting up an access controlled intranet site - ASP .NET有关设置访问受控 Intranet 站点的基本问题 - ASP .NET
【发布时间】:2010-01-26 15:56:51
【问题描述】:

请注意:

我知道这是一个有点模糊的问题。因此,非常感谢您的耐心。

请求:

关于从哪里开始的抽象高级想法,因为此时我完全一无所知。

背景:

我正在建立一个 Intranet 站点 (ASP .NET),我们本地用户组中的用户(也被添加到我们的用户表中)将可以访问他们有权访问的 Web 应用程序。现在我正在从我的 PC 上开发并使用 SQL Server 2005 Express 作为数据库,但最终站点将托管在具有 IIS 6.0 的应用程序服务器上,并且数据库位于 SQL Server 2005 的实例上。我是一个 .NET 新手,并且这是一项艰巨的任务,但经验值一百万美元。

详情:

我们正在为我们的 Intranet 站点使用 Windows Athentication。因此,我没有使用 ASP .NET 的成员数据源。而是将所有用户信息存储在两个表 tblEmployee(我公司的所有员工)和 tblUser(内网站点的所有用户)中。

tblEmployee 具有字段 - EmployeeID、FirstName、LastName、CostCentre、Role、ManagerName、UserID

tblUser 具有字段 - EmoployeeID、UserID、ApplicationID、AccessLevel、AddedBy、DateAdded

我已经设置了这些表格,我可以随时更改它们)。

我需要完成的事情 - 当用户访问 Intranet 站点时,我可以获得他/她的域用户名。我需要检查 tblUser 中是否存在此用户(域用户名与 tblUser 中的 UserID 相同)。如果用户存在,我们显示他/她可以访问的所有应用程序,否则显示“无访问”页面。

具体问题:

  1. 我需要“学习”哪些东西? (正如我之前所说,我是 .NET 新手,但也是一个快速学习者)

  2. 我需要使用 URLAuthorizationModule 来验证页面请求。如何从 URL 中隐藏用户名?我一直在考虑使用会话 ID ......但是我怎么知道用户是谁?我确信这是一种加密 UserID 的方法,只是找不到。

感谢您的任何反馈。即使是最小的小费也会对我有很大帮助。

【问题讨论】:

    标签: c# asp.net sql-server iis


    【解决方案1】:

    您不需要任何表格,也不需要任何一行代码。对于 Intranet 站点,最好的选择是使用 HTTP Negotiate authentication 并使用 Active Directory 组成员身份进行授权:

    • 为有权访问该站点的用户创建域安全组
    • 将授权用户添加到此组
    • 在您的 IIS 服务器上,将 UrlAuthorizationModule 添加到 IIS(通过添加/删除程序功能)
    • 您的网站上将出现一个新图标“授权规则”,使您可以为您的网站配置安全性
    • 修改站点安全性以仅允许您之前创建的组的成员查看您的站点
    • 享受

    当网站页面从不关心连接用户的身份时,这是一个完美的设置,但整个网站必须仅限于一组受信任/授权的用户。 IIS 将负责身份验证和授权,您可以为未授权的用户配置 403 页面响应。整个身份验证过程发生在 HTTP 级别,在 URL 或任何类似的东西中没有“用户”来“加密”。 IIS 将使用 SPNEGO 身份验证质询来质询浏览器,并且所有浏览器都知道如何处理它,并通过对浏览该站点的工作站上的 当前登录用户 进行身份验证的协商进行响应(也称为集成身份验证) )。详情请见Configuring URL Authorization Rules in IIS 7

    如果您不需要感到困惑,可以在此处停止阅读。

    如果您想了解所有详细信息,请注意,这与 ASP.Net URL 授权模块相同,您会发现大量参考资料,您可以从中配置.config 文件。见Differences Between ASP.NET URL Authorization and IIS 7.0 URL Authorization

    如果您的代码确实需要调用者的身份(例如,出于审计目的),那么您必须添加一个托管模块,将身份验证信息传递到您的应用程序域。该模块是UrlAuthorization 托管模块。请注意,为了完美的 1-2 混淆,该模块名为 UrlAuthorization,但它在名为 UrlAuthorizationModule 的托管模块中实现,它与真正的 IIS 原生 UrlAuthorizationModule 模块相同...

    如果您需要模拟调用者,那么事情会变得更加复杂,因为您必须配置受信任的委派。为此,您需要配置 ASP.Net Impersonation,然后启用约束委派以便能够从 ASP.Net 应用程序池访问 SQL Server,请参阅 How To: Use Protocol Transition and Constrained Delegation in ASP.NET 2.0(IIS 7.0 类似)。

    最后还有一个问题是您希望您的应用程序代码根据调用者的身份(即显示管理选项)表现出不同的行为,因此最好的选择可能是使用与 Active 集成的 role membership provider WindowTokenRoleProvider 之类的目录。

    【讨论】:

    • 您好 Remus,非常感谢您提供如此详尽的回答。在我们的例子中,页面的内容会根据用户是谁而改变。我必须为没有明确表示而道歉。但幸运的是,您已经对如何处理这种情况(角色会员提供者)给出了一些想法。我会对此做一些研究,然后发回我的设计理念。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多