单一登录Web应用程序的企业级安全系统(转)

fangcloud 362 2022-06-23

本文转载自网络公开信息

单一登录Web应用程序的企业级安全系统(转)[@more@]

单一登录解决方案概述

图 1 所示为内部用户和外部用户在登录到位于一个公司的 Intranet 上的网站时所执行的一系列步骤。在 50,000 英尺的级别上,这个系统仅有四个组件:通过 Windows 身份验证的网站、Active Directory、一个数据库服务器和一个或多个基于窗体进行身份验证的网站。

图 1:涵盖内部用户和外部用户的单一登录解决方案的示例

Intranet 解决方案

在图 1 的左上角可以看到内部用户使用浏览器浏览到特定的网站(第 1 步)。这个网站验证(第 2 步)用户的 Windows 凭据(通过 Active Directory)。如果用户是有效的 Windows 用户,则允许其进入该站点。通过身份验证后,将检索用户的标识,并调用包含指定用户能够运行的应用程序列表的数据库表(第 3 步)。这些应用程序将显示在 DataGrid 中,以供用户选择。

用户单击希望运行的应用程序后,将生成一个唯一的、只能使用一次的令牌(第 4 步)。此令牌和用户标识将被存储在另一个数据库表中。然后此令牌被传递给用户要运行的 Web 应用程序中的一个特定页面(通过查询行)。此特殊页面从查询行读取该令牌,然后验证在数据库表中是否存在此令牌(第 5 步)。如果令牌存在,它将在数据库中检索登录 ID,然后删除存储此令牌的记录。此操作能够防止其他人再次使用此令牌并将登录 ID 发送回 Web 应用程序。

在了解了 Web 应用程序中的用户标识后,您需要生成一个 ASP.NET 窗体身份验证票据,因为在 Intranet 中,所有的 Web 应用程序都将使用基于窗体的身份验证。此票据将被正在浏览站点中所有的安全页面的用户所使用。

Extranet 解决方案

想要访问 Web 应用程序的外部用户(您所在域之外的用户)将被定向到与内部用户不同的起始页面(参见图 2)。内部用户和外部用户被定向到的 Web 应用程序采取了基于窗体的身份验证的安全措施。当外部用户试图打开此 Web 应用程序中的任何页面时,他们将被自动重定向至登录页面。此登录页面与对内部用户进行身份验证的页面不同。用户必须输入其凭据,然后系统将调用同一个数据库,以确定该用户对此应用程序是否有效。如果有效,则将为此用户会话生成正常的基于窗体的身份验证 cookie。

类和页面

您需要创建若干类和 Web 页面以支持企业级安全系统。图 2 显示了需要为此系统编写的每个类和 Web 页。本文稍后将讨论此图所显示的每个类。在此图之后,列出了每个类的说明信息以及您的系统中的 Web 页面主要功能。

图 2:设计和开发单一登录解决方案只需要几个类和页面

Apps 类

此类用于检索指定用户的应用程序列表。它还将生成一个新令牌、根据给定的令牌检索用户的标识信息以及删除令牌。

AppToken 类

此类包含从 Apps 类的 VerifyLoginToken 方法返回令牌信息时所需的四个属性。表 2 说明了此类包含的四个属性。

AppUserRoles 类

此类用于检索试图登录应用程序的用户的信息。其中的一个方法根据给定的登录 ID 和应用程序键值检查登录是否有效。另一个方法返回给定用户的角色集。还有一个方法根据登录 ID 和应用程序键值返回 esUser 表的主键。

AppLauncher 应用程序中的 Default.aspx

此 Web 页类将检索通过了 IIS 身份验证的 Windows 用户,并返回允许这些用户访问的应用程序的列表。它将在 DataGrid 中显示此列表(图 3),并允许用户单击其中特定的应用程序。用户单击应用程序后,此页将生成一个新令牌,并将此令牌和用户 ID 存储到 esAppToken 表,然后调用此应用程序将令牌传递给该 Web 应用程序中的 AppLogin.aspx 页。

图 3:应用程序启动器显示允许登录的用户运行的应用程序的列表

每个网站中的 AppLogin.aspx

只能从应用程序启动器调用此 Web 页类。若有任何其他的应用程序试图调用此页,它会将用户重定向至网站的 Default.aspx 页。因为每个 Web 应用程序都使用基于窗体的身份验证,所以此操作将强制 ASP.NET 将用户重定向至站点中的 Login.aspx 页。

如果使用令牌从应用程序启动器站点调用此页,那么此页将调用 Apps 类中的方法,以验证此令牌是否有效。如果令牌有效,则 Apps 类将返回一个 AppToken 对象,以便此页能够使用此对象中的信息创建基于窗体的身份验证的用户。

每个网站中的 Login.aspx

这是常规的 Web 登录页面,它要求用户输入凭据,并在数据库中检查这些凭据,以确保是有效用户;此外,如果是有效用户,则还将创建身份验证票据,并在用户进入站点时,重定向至用户请求的页面。

每个网站中的 Default.aspx

这是每个网站的主登陆页面。只有通过了 AppLogin 或 Login Web 页面的身份验证的用户才能够浏览此页以及站点中所有其他页。

您还需要在数据库中创建若干表,用来支持此单一登录企业级安全系统。本文中的表所包含的字段不多,但就所述内容而言,已经足够。图 4 显示了需要在数据库中创建的每个表之间的关系。在图 4 之后,会看到这些表的列表,以及本解决方案中使用的每个表的说明信息。

图 4:实现单一登录系统的完整角色所需的若干表

esApps

此表包含企业中所有 Web 应用程序的列表。除应用程序的名称以外,表中还包含应用程序的详细说明信息以及应用程序的 URL。URL 是完整形式的 URL,并且应以 AppLogin.aspx 页结尾。应用程序启动器中的 default.aspx 页将负责在重定向至 Web 应用程序前向 URL 中添加字符串 “Token=

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表亿方云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱daifeng@360.cn 处理。
上一篇:引入SOA架构分级模型 提高企业项目成功率(soa架构与普通架构的区别)
下一篇:一家企业需要多少商务智能(BI)软件工具(转)(商业智能bi工具对比)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~