Spring security 将用户id作为私钥加密值传递的应用程序能否访问使用CAS进行SSO的其他应用程序

Spring security 将用户id作为私钥加密值传递的应用程序能否访问使用CAS进行SSO的其他应用程序,spring-security,single-sign-on,cas,Spring Security,Single Sign On,Cas,假设我们有两个应用程序 App1使用CAS进行身份验证 外部应用程序App2某些自定义身份验证 以及id为“user1”的用户。此用户登录到App2后,我们希望显示一个允许用户登录到App1的链接(App1的链接)。用户单击链接后应转到App1 App2仅将使用私钥加密的用户id传递给App1。它不会传递密码 用户--------->External App2------加密用户id------>CAS==App1 这是否可以实现,因为请求不包含密码? 由于这是我第一次从事CAS和SSO的工作,

假设我们有两个应用程序

  • App1使用CAS进行身份验证
  • 外部应用程序App2某些自定义身份验证
  • 以及id为“user1”的用户。此用户登录到App2后,我们希望显示一个允许用户登录到App1的链接(App1的链接)。用户单击链接后应转到App1

    App2仅将使用私钥加密的用户id传递给App1。它不会传递密码

    用户--------->External App2------加密用户id------>CAS==App1

    这是否可以实现,因为请求不包含密码? 由于这是我第一次从事CAS和SSO的工作,请您指导我该方法

    非常感谢你的帮助


    我们正在使用CAS 3.4和Spring 3集成。

    是的,这是可能的,在您的应用程序1中,您无需检查密码,因为CAS将进行身份验证,在其他应用程序级别,当您单击链接(App1)时,您必须传递访问令牌和用户名,在您的应用程序1中,您必须使用CAS库,这些库将检查请求是否来自受信任的站点,以及访问令牌(这里我们称为服务票证和代理授权票证)是否有效。完成这两项检查后,您的身份验证函数/方法将被执行(您必须这样配置),如果数据库中存在用户名,您必须创建一个会话,并且可以假定它已登录。功能可能因技术和要求而异

    感谢卡马尔的快速回复。由于App2是一个外部应用程序,它如何获取访问令牌?它是否需要向CAS服务器(由App1使用)发送请求以获取访问令牌?是的,您的App1和App2都应该配置CAS服务器。用户在App1和外部App2中将具有不同的密码。如果我没有错,为了从App2获得访问令牌,我们需要传递userid和password,这与App1不同。如何处理这种情况?请注意。只需考虑您的APP2是父应用程序,从那里您试图登录时显示CAS登录,CAS服务器也将连接到APP2数据库,一旦您输入您的用户名和密码,CAS将进行认证,并将AUTH令牌提供给APP2,APP2也将登录。如我最初的问题所述,App2有其唯一的身份验证模块,不使用CAS。因此不确定他们如何共享相同的访问令牌。我们可以介绍一下如何定制这个过程吗?