我们的业务用例是我们有4到5个服务部署为java spring Web应用程序。这些服务的用户/客户来自注册过程或一些现有的运行中的应用程序,它们公开为其余服务。我们打算建立一个门户,使用户能够使用一个帐户/凭据直接登录许多服务。
使用内部方法,我们假设每个服务都有单独的客户表。还有一个公共登录表,用于在每个服务的单独客户表中将其ID标记/映射为外键的所有服务。
一些服务也可以不经注册即可访问,在这种情况下,我们通过客户帐户ID从某些第三方服务中获取数据,并将其存储在单独的服务/应用程序客户表和公共登录表(如果尚不存在)中。
对于需要注册的服务,我们将客户凭证存储在登录表中(如果不存在);以及在服务/应用程序客户表中具有通用登录表映射。
但是我们需要一个安全的门户网站,该站点具有会话跟踪,会话超时,就像Single Sign On
通过一些研究,我们缩小了适用于SSO或Oauth2的情况下实现上述方案的方法。 请参阅链接(https://stormpath.com/blog/oauth-is-not-sso)以获取更多信息。
有人可以建议SSO或Oauth2哪种方法适用于我们的业务用例吗?
如果SSO是Java Spring应用程序中最好的开源简单SSO?
如果是OAuth2,什么将充当客户端应用程序,授权服务器,资源所有者和资源服务器?因为我们将服务(Java应用程序)作为客户端应用程序托管在Common Application / Portal中?公共登录表将充当资源所有者吗?
答案 0 :(得分:0)
您可能需要SpingSAML。如果应用程序托管在单独的路径上,例如example.org/app1和example.org/app2,则可以将Shibboleth Service Provider用作应用程序的SAML SP。
您仍然需要SpingSAML不能提供的某种身份提供程序,但是那里有无数的IdP实现:即Shibboleth Identity Provider,ADFS或商业IdP,例如Okta,OneLogin,Ping等