C# 企业SSO的实现

C# 企业SSO的实现,c#,security,authentication,single-sign-on,C#,Security,Authentication,Single Sign On,我一直在努力了解企业环境中的SSO,以及什么样的解决方案最适合我公司的问题 我们有几个应用程序(大部分在.net中,但一些在java中)在我们的域上运行。。a、 mydomain.com、b.mydomain.com等 我的问题在于试图找出如何实现单点登录,因为据我所知,OpenID和OpenAuth等用于facebook、twitter、基于链接的SSO,即基于消费者的SSO 我们需要一个内部SSO系统设置,但我找不到很多企业示例来说明如何进行设置以及使用哪些协议/框架/服务器 有谁能告诉我如

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

我们有几个应用程序(大部分在.net中,但一些在java中)在我们的域上运行。。a、 mydomain.com、b.mydomain.com等

我的问题在于试图找出如何实现单点登录,因为据我所知,OpenID和OpenAuth等用于facebook、twitter、基于链接的SSO,即基于消费者的SSO

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

有谁能告诉我如何以及是否应该在这种情况下使用OpenID/OpenAuth,以及它的优点和缺点是什么

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

最后,关于基于cookie的SSO,这是一个好主意吗

谢谢
Neil

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

  • 这将更容易实施。只需检查cookies并允许用户访问应用程序
  • 不同应用程序之间无XML消息交换(无需设计架构)
  • 您不需要雇佣任何Web服务专家。(只要开发人员知道如何处理cookie)
  • 最终,它将取决于您的可扩展性要求
更新:

可扩展性:

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

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

Active Directory联合身份验证服务()是一种企业解决方案。我不建议编写您自己的代币发行人,因为这涉及到很多风险,包括安全性和性能。

非常感谢您的回答!:)关于可伸缩性,我对基于cookie/token的主要担忧是在每个应用程序中都有创建/解密cookie的代码。您认为可伸缩性会以何种方式受到影响?另外,您认为在cookie中存储用户特定的信息(如授权信息)是一个坏主意吗?谢谢您的更新!它确实给了我更好的洞察力!当你写“域”时,你指的是URL中的域还是active directory域?后者意味着您至少可以在IIS中使用Windows身份验证。所有不在IIS中托管的内容都需要一定级别的配置或自定义,具体取决于环境。Active Directory不是一个真正的选项,因为应用程序在多个服务器上为不同的客户运行