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