【问题标题】:Enterprise SSO implementation for a company公司的企业 SSO 实施
【发布时间】:2013-01-30 20:24:22
【问题描述】:

我一直在努力了解企业环境中的 SSO,以及最适合我公司问题的解决方案。

我们有几个应用程序(主要在 .net 中,但在 java 中)在我们的域上运行.. a.mydomain.com、b.mydomain.com 等...

我的问题在于试图弄清楚如何实现单点登录,因为据我所知,OpenID 和 OpenAuth 之类的东西用于 facebook、twitter、基于 SSO 的链接,即基于消费者的 SSO。

我们想要一个内部 SSO 系统设置,但我找不到很多企业示例来说明如何执行此操作以及要使用哪些协议/框架/服务器。

谁能告诉我如何以及是否应该在这种情况下使用 OpenID/OpenAuth,有什么好处和坏处?

另外,基于令牌的 SSO 会是一个好主意吗?考虑到所有应用都将位于同一个域中(已设置 SSL)。

最后,基于 cookie 的 SSO 怎么样,这是个好主意吗?

谢谢 尼尔

【问题讨论】:

  • 当您写“域”时,您是在谈论 URL 中的域还是 Active Directory 域?后者意味着您至少可以在 IIS 中使用 Windows 身份验证。不在 IIS 中托管的所有内容都需要一定程度的配置或自定义,具体取决于环境。

标签: c# security authentication single-sign-on


【解决方案1】:

正如您提到的,您的所有应用都在同一个域中,并且您正在寻找内部 SSO 解决方案,我建议您使用基于 cookie 的 SSO 服务。仅仅是因为

  • 这将更容易实现。只需检查 cookie 并授予用户对应用的访问权限。
  • 不同应用之间没有 XML 消息交换(无需设计架构)
  • 您不需要聘请任何 Web 服务专家。 (只要您的开发人员知道如何处理 cookie)
  • 最终取决于您的可扩展性要求

更新:

可扩展性:

  • 将来您可能会在不同的地理位置扩展您的用户群。
  • 您的不同应用程序可能有不同的服务器,并且用户数据库可能是分布式的。
  • 在这种情况下,您必须维护一个身份存储库以将身份验证作为服务提供。(这是您提到的身份验证框架所做的)

Cookie:

  • Cookie 处理不是火箭科学。浏览器自动发送cookies到 你的服务器在 HTTP 请求中,你只需要阅读它。
  • 在用户登录时创建 cookie。将域属性设置为您的根域,以便 其他子域可以访问它。
  • 当用户尝试登录应用程序时检查 cookie。如果存在 cookie,则表示用户已经登录。
  • 不要忘记在用户注销时删除它们。

【讨论】:

  • 非常感谢您的回答! :) 关于可扩展性,我对基于 cookie/令牌的主要担心是在每个应用程序中都有用于创建/解密 cookie 的代码。您认为可扩展性会以何种方式受到影响?另外,您是否认为在 cookie 中存储用户特定信息(例如授权信息)是一个坏主意?
  • 感谢 Mayank 的更新!它确实让我有更好的洞察力!
【解决方案2】:

Active Directory 联合服务 (http://msdn.microsoft.com/en-us/library/bb897402.aspx) 是一种企业解决方案。我不建议您编写自己的令牌发行者,因为这涉及很多风险、安全性和性能。

【讨论】:

  • Active Directory 并不是一个真正的选项,因为该应用程序在多个服务器上为不同的客户运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2015-09-11
  • 1970-01-01
  • 2010-09-16
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多