ASP.Net Web应用程序的单点登录

5
客户要求主要应用程序基于公司解决方案(Active Directory)提供用户“单点登录”身份验证功能。 这意味着业务应用程序信任浏览器提供的凭据,不要求用户提供标准的登录/密码对。服务器/浏览器的信任建立在Windows集成身份验证机制上。
我们的ASP.Net Web应用程序是基于dot net framework 2.0托管在IIS 5上的。我们需要实现SSO功能。我们该如何做?
3个回答

4
我相信这些要求几乎所有的内部网络应用程序都会遵循。
如果您只是在IIS中启用了Windows集成登录,那么您就已经满足了第一项要求。
我不知道第二项是否可行,因为它与您的其他要求冲突。浏览器仅传递本地登录用户的凭据(如#1所需)。如果您构建了一个通过AD进行身份验证的Web表单,则将违反您的叙述/段落中列出的要求。
您的客户认为#2实际上意味着什么?他们想要什么?以不同的用户身份登录的方法?他们可以在计算机上注销并以其他用户身份登录。

1

使用自定义表单身份验证,而不是要求用户输入ID和密码。

先决条件: 1> 数据库表格包含用户详细信息,如电子邮件、角色等 2> 企业活动目录存储用户配置文件 3> 编写一个 VBCOM 或 ActiveX 或其他组件,可以通过浏览器从 Windows 计算机读取用户的域和名称。

步骤: 对于所有表单的页面加载,调用组件<3>连接到活动目录<2>。该方法应该从 Windows 系统中读取当前用户的名称和域。 使用这些详细信息搜索 AD。如果存在,则查询并提取电子邮件地址或 AD 用户配置文件中的唯一键。 使用此键查询数据库<1>,其中存储了特定于应用程序的用户详细信息,如电子邮件、角色。 如果 AD 中的用户电子邮件与表格中的电子邮件匹配,则授予用户适当的权限,否则拒绝访问,如果用户不存在或角色为空/受限制。 如果是有效用户,则创建一个加密的 cookie,其他应用程序可以读取它来真正实现任何类型的 SSO。


1
通常情况下,基于声明的协议(如WS-Federation或SAML 2.0)是最好的解决SSO需求的方式。原则上,您可以自己实现这些协议,因为它们是开放标准,但这需要大量专业知识。
新的Windows身份验证基础(以前称为Geneva框架)包含协议实现,可以启用SSO方案,尽管这将要求您升级平台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接