.net 跨平台SSO-从哪里开始?

.net 跨平台SSO-从哪里开始?,.net,jakarta-ee,single-sign-on,josso,.net,Jakarta Ee,Single Sign On,Josso,我正在研究两个不同系统之间的单点登录选项:一个.NET,一个JavaEE。它们各自独立管理,并有单独的用户管理,有些用户重叠 我想能够从一个链接到另一个没有重新提示密码 SSO产品和协议似乎有很多选择。我很有信心我可以编写一个一次性的代码来生成和验证我自己的安全令牌,但我更愿意不重新发明轮子 在方法和/或产品方面,您有什么建议(最好是开源) 首先,您会选择支持SAML、OpenID、OAuth或以上任何一种的东西吗 第二,关于免费/开源产品,我知道OpenAM、Shibboleth、JOSSO和

我正在研究两个不同系统之间的单点登录选项:一个.NET,一个JavaEE。它们各自独立管理,并有单独的用户管理,有些用户重叠

我想能够从一个链接到另一个没有重新提示密码

SSO产品和协议似乎有很多选择。我很有信心我可以编写一个一次性的代码来生成和验证我自己的安全令牌,但我更愿意不重新发明轮子

在方法和/或产品方面,您有什么建议(最好是开源)

首先,您会选择支持SAML、OpenID、OAuth或以上任何一种的东西吗


第二,关于免费/开源产品,我知道OpenAM、Shibboleth、JOSSO和CAS。有什么经验可以和他们分享,好的,坏的还是丑陋的

首先让我们看看协议:

  • SAML2.0是一种集中式/分散式SSO协议。这是最重要的 高级协议和提供联合,即您可以允许用户 使用任意一个X系统登录,或通过 单一系统(称为IDP)。SAML2.0广泛应用于 金融和政府部门以及一些主要的 应用程序(例如谷歌应用程序和Saleforce)。它也是 最复杂协议

  • OpenID是一种分散的协议,最适合于internet, 不是内联网/外联网应用程序。用户可以选择从登录 任何OpenId提供者。Stackoverflow是OpenId-we的一个很好的例子 可以选择使用我们的Google或Facebook帐户登录。你可以 通过强制默认值以集中方式实现OpenId 消费应用程序(称为依赖应用程序)之间的关联 第三方)和SSO系统(称为服务提供商)

  • OAuth不是真正的SSO协议。它允许用户授予 应用程序A访问应用程序B中的his信息而无需 向应用程序A提供应用程序B的凭据。某些 人们使用OAuth作为伪身份验证的一种形式,即如果 系统能够访问属于用户X的照片,然后 用户必须是X。这是黑客攻击,不推荐使用

  • 使用标准化协议来避免锁定绝对是个好主意。Microsoft最近引入了对SAML2.0的支持,并且有许多开源和商业产品可用于Java。有一些OpenId实现可用于java,但我对.NET世界的了解还不够,无法对此发表评论

    正如您提到的,有一系列开源SAML产品可用(OpenAM、Shibboleth、JOSSO和CAS)。需要注意的一点是,SAML是一个复杂的协议,因此如果您走上开源路线,您将需要为一些艰苦的工作做好准备。当我们构建SSO平台(基于SAML2.0)时,我们花了很多时间试图简化事情,以抽象复杂性。其他商业供应商也做了同样的事情,但您提到的开源产品更注重功能性而不是简单性-IMHO!:)