我们的业务用例是我们有四到五个部署为java spring web应用程序的服务。这些服务具有从注册过程或一些现有的运行应用程序中派生的用户/客户,并将其公开为rest服务。我们打算制作一个单一的门户,为用户提供能够使用单一帐户/凭证直接登录到许多服务的能力。
对于内部方法,我们假设每个服务都有单独的客户表。以及用于其id被标记/映射为每个服务的单个客户表中的外键的所有服务的公共登录表。
此外,一些服务无需注册就可以访问,在这种情况下,我们通过客户帐户id从一些第三个rest服务中获取数据,并将其存储在单独的服务/应用程序客户表和公共登录表中(如果尚未存在)。
对于需要注册的服务,我们将客户凭证存储在login表中(如果不存在);还将其存储在service/applications customer表中,其中包含一个通用的登录表映射。
但是我们需要一个安全的门户来跟踪会话,会话超时就像单点登录一样
通过一些研究,我们缩小了使用单点登录或Oauth2实现上述场景的方法,her是适用的。有关更多信息,请参阅链接(https://stormpath.com/blog/oauth-is-not-sso )。
谁能建议一下单点登录或Oauth2哪种方法适用于我们的业务用例?
如果是单点登录,那么对于java Spring应用来说,哪个是最好的开源简单单点登录呢?
如果是OAuth2,什么将充当客户端应用程序、授权服务器、资源所有者和资源服务器?因为我们将服务(Java应用程序)作为托管在公共应用程序/门户中的客户端应用程序?公共login表将充当资源所有者吗?
发布于 2018-11-17 02:09:52
您可能需要SpingSAML。如果应用程序托管在不同的路径上,比如example.org/app1和example.org/app2,那么您可以使用Shibboleth Service Provider作为应用程序的SAML。
您仍然需要某种类型的身份提供者,这是SpingSAML所不能做到的,但有无数的IdP实现:即Shibboleth Identity Provider、ADFS或商业IdP,如Okta、OneLogin、Ping等。
https://stackoverflow.com/questions/53335853
复制相似问题