为SAAS实现SSO和Spring Security

时间:2014-01-27 20:52:55

标签: angularjs spring-mvc spring-security oauth-2.0 cas

这是我们想要的高级别。

enter image description here

我的要求,

  1. 客户应该可以使用现有用户名/密码访问我的应用程序。

  2. 我的客户应该能够为我提供他们的用户角色,并在此基础上我将管理服务器中的资源授权。

  3. 客户端将共享数据库。 (多租户)。

  4. 我遇到的OAuth 2.0示例是利用Facebook / Google等身份验证服务器,用户可以通过google或facebook帐户登录。 我不希望我的客户能够使用他们自己的帐户登录。

    就CAS身份验证服务器而言,它会将用户引导至自己的登录页面。

    我正在寻找一种标准方式,在这里我可以使用spring安全性并允许我的客户在用户上单独签名他们自己的凭据。任何参考资料都会有很大的帮助。谢谢。

3 个答案:

答案 0 :(得分:2)

如前所述,CAS是一个Web SSO,因此您需要通过它自己的身份验证页面才能使SSO正常运行。有许多方法可以使CAS使用您的身份验证持久性系统(在我的项目中,我通常使用JPA,因为我的客户有许多仅基于关系数据库持久性的旧应用程序)。 在您的项目中,我认为您可以设置CAS以使用您的应用程序身份验证方法,而您的应用程序可以直接指向CAS进行身份验证。我的意思是您的应用程序也应该使用CAS进行单点登录,因此用户只需输入一次凭据即可。最后,您可以自定义CAS主题,以获得与您的应用程序布局相同的登录和错误页面(您甚至可以在iframe中加载CAS登录页面,然后如果要将其集成到您的webapp中,则会成功重新加载您的应用程序页面)

如果我理解你所写的内容,你希望它以这种方式表现:

  1. 您在应用程序中登录
  2. 您的应用程序告诉您已登录的CAS
  3. 您访问其他应用程序
  4. 如果用户已登录且CAS回答是
  5. ,则其他应用程序会询问CAS

    但是"容易"工作流程的解释是:

    1. 您尝试访问使用CAS(您或您的另一个)
    2. 保护的任何应用程序的安全部分
    3. 如果用户已登录,应用程序会询问CAS
    4. CAS回答否,因此用户被重定向到CAS登录
    5. 用户使用CAS进行身份验证
    6. CAS将用户重定向到调用应用程序
    7. 如果用户已登录且CAS回答是
    8. ,则应用程序会询问CAS
    9. 用户可以访问应用程序的安全部分
    10. 用户尝试访问其他应用程序
    11. "另一个"应用程序询问CAS用户是否已登录且CAS回答是
    12. 用户可以访问"另一个"的安全部分。应用

答案 1 :(得分:0)

CAS是一个Web SSO,因此您可以在多个Web应用程序中共享用户身份,而Spring Security是一个很好的CAS客户端。 您还可以启用CAS服务器将身份验证委派给Facebook或Google。 我们的想法是让您的CAS服务器对您的用户进行身份验证并获取他们的个人资料,然后将其推送到Web应用程序。

答案 2 :(得分:0)

我认为CAS提供了一个REST API。

如果可以用于登录,那么各种应用程序可以显示自己的登录界面并将用户名/密码发送给CAS。