我遵循this guide并克隆了authserver。该项目具有authserverclient(作为测试)。示例可以正常工作,但是如果我删除context-path属性(我只希望我的应用程序在/上运行),则在重定向回client后,它将失败。例:


转到clientlocalhost:9999);
重定向到authserverlocalhost:8080);
通过GitHub登录;
重定向到authserver并立即使用下一个URL重定向到client



  http://localhost:9999/login?code=dqoxz4&state=79qtJ5


Whitelabel错误页面响应:


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


如上所述,仅当context-path/(或完全删除)时,它才会失败。否则,一切正常。

最佳答案

从您的链接:


  如果您同时运行两个客户端,则上下文路径必须明确
  和本地主机上的身份验证服务器,否则Cookie路径发生冲突并
  这两个应用无法在会话标识符上达成共识。


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

编辑:

不同的域应该没问题。他们不共享Cookie。在同一个主机(如localhost)上,您必须使用上下文路径,因为cookie不是特定于端口的。参见:https://stackoverflow.com/a/16328399/926620

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

127.0.0.1 website authserver


然后,您可以在同一台计算机上使用http://website:9999http://authserver:8080进行开发。

或者,您也可以为Cookie设置不同的名称。参见http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

server.session.cookie.name=auth
server.session.cookie.name=web

07-28 08:26