Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring SSO授权在没有上下文路径的情况下失败_Java_Spring_Spring Security - Fatal编程技术网

Java Spring SSO授权在没有上下文路径的情况下失败

Java Spring SSO授权在没有上下文路径的情况下失败,java,spring,spring-security,Java,Spring,Spring Security,我跟踪并克隆了这只老鼠。该项目有一个authserver和一个client(作为测试)。示例运行良好,但如果我删除属性(我只想让我的应用程序在/上运行),则重定向回客户端后,它将失败。例如: 转到客户端(localhost:9999) 重定向到authserver(localhost:8080) 通过GitHub登录 已重定向到authserver,并立即使用下一个url重定向到客户端: 白标错误页面响应: 出现意外错误(类型=未授权,状态=401)。 身份验证失败:无法获取访问令牌 正如我上

我跟踪并克隆了这只老鼠。该项目有一个
authserver
和一个
client
(作为测试)。示例运行良好,但如果我删除属性(我只想让我的应用程序在
/
上运行),则重定向回
客户端后,它将失败。例如:

  • 转到
    客户端
    localhost:9999
  • 重定向到
    authserver
    localhost:8080
  • 通过GitHub登录
  • 已重定向到
    authserver
    ,并立即使用下一个url重定向到
    客户端
  • 白标错误页面响应:

    出现意外错误(类型=未授权,状态=401)。
    身份验证失败:无法获取访问令牌

    正如我上面提到的,只有当
    上下文路径
    /
    (或完全删除)时,它才会失败。否则,所有操作都有效。

    从您的链接:

    如果同时运行两个客户端,则上下文路径必须是显式的 以及本地主机上的身份验证服务器,否则cookie路径会发生冲突和 这两个应用程序无法在会话标识符上达成一致

    我们在/上成功运行了一个应用程序,在/uaa上成功运行了AuthServer。尝试在AuthServer上设置上下文路径。查看应用程序和AuthServer中的Cookie:它们不应该有相同的路径

    编辑:

    不同的领域应该可以。他们不分享饼干。在同一主机上,如localhost,您必须使用上下文路径,因为cookie不是端口特定的。见:

    或者,将域放在/etc/hosts(linux)或c:\windos\system32\drivers\etc\hosts中。只需添加以下行:

    127.0.0.1 website authserver
    
    然后您可以在同一台机器上使用和进行开发

    或者您也可以为cookie设置不同的名称。见:


    您可以在客户端应用程序中设置RedirecURI:

    您可以在注册客户端时在oauth2服务器上设置它


    但我认为它会返回到您的根上下文传递,比如它在根传递上没有足够的权限,或者其他应用程序使用此上下文传递

    我想在另一个域上托管身份验证服务器。顺便说一下,我在客户端有两个
    JSESSIONID
    。如果我尝试使用本地IP访问身份验证服务器,它会工作吗?谢谢!带有
    主机的解决方案非常棒!服务器cookie和客户端cookie的不同名称为我带来了好处+1.
    
    server.session.cookie.name=auth
    server.session.cookie.name=web
    
    security:   oauth2:
    client:
      client-id: acme
      client-secret: acmesecret
      access-token-uri: http://localhost:8080/oauth/token
      user-authorization-uri: http://localhost:8080/oauth/authorize
      pre-established-redirect-uri: http://localhost:9999/client