1

我需要为我的客户开发 SSO 服务器。我的用例是,我有两个应用程序,我希望它们没有自己的登录屏幕,并且使用户可以轻松地从应用程序 1 跳转到应用程序 2(应用程序 1 和应用程序 2 拥有自己的资源,并且他们应该仅依赖中央身份验证服务器来对用户进行身份验证和授权)。我正在阅读有关在 java 中创建 SSO 服务器的信息。我开始阅读 oauth 2.0、open ID connect 和 SAML。我读得越多,我就越困惑。

我在一些地方读到 Oauth 2.0 不能用于 SSO,而在一些地方我读到它可以使用。

我对这三个如何工作有所了解。然而,我无法想象这三者之间有何不同。

我将在下面提出我的问题

  1. Oauth 2.0 能否用于 SSO
  2. 对于数据非常敏感的金融公司,哪个更好 b/w Oauth 2.0 、 SAML 和 Open ID 连接。此外,我们还打算拥有原生移动应用程序。这也将使用相同的 SSO 服务器来登录用户。
  3. 是否有任何库可以在 Java 中实现这些中的任何一个。我打算使用 dropwizard 服务器
4

3 回答 3

3

wrt。到“1. OAuth 可以用于 SSO”这里有一个很好的阅读:http: //oauth.net/articles/authentication/基本上说:“不是没有扩展配置文件,而且这已经作为标准配置文件完成称为 OpenID 连接”

于 2014-12-23T17:24:41.717 回答
1

OAuth 不提供联邦意义上的真正 SSO,例如使用 WS-Federation / SAML 和安全令牌服务 (STS)。

OAuth 实际上是一种授权协议,即用于同意。OpenID Connect 在 OAuth 之上提供了一个身份验证层。

SAML 是“最佳”选择,例如 Shibboleth、Salesforce、WorkDay 等都将它用于 SSO。

但是,SAML 不适合原生应用程序,因为它是基于使用 HTTP POST 的浏览器。OAuth 更适合这一点。

对于 Java SAML,您可以使用OpenSAML

Spring Security 中有一个 OAuth 堆栈。

于 2014-11-23T18:45:47.980 回答
1

免责声明:我是中科院的主席,也是中科院云的创始人(https://www.casinthecloud.com)。

CAS 也是一种广泛使用的 SSO 解决方案。它适用于网站和移动应用程序,并具有一些强大的功能,如网关、更新和代理。这确实是一个简单的协议,您可以非常快速地理解和集成。许多技术中有许多 CAS 客户端与 CAS 服务器一起工作。它是开源且免费的,如果您愿意,也可以依赖付费提供商。

于 2014-11-24T11:56:36.003 回答