我关注了this guide并克隆了authserver。该项目有authserver
和client
(作为测试)。示例工作正常但如果我删除context-path属性(我只希望我的应用程序在/
上工作),则在重定向回client
后失败。例如:
client
(localhost:9999
); authserver
(localhost:8080
); authserver
并立即转到client
下一个网址:Whitelabel错误页面响应:
出现意外错误(type = Unauthorized,status = 401) 身份验证失败:无法获取访问令牌
正如我上面提到的,只有当context-path
为/
(或根本不删除)时,它才会失败。否则,一切正常。
答案 0 :(得分:3)
从您的链接:
如果您同时运行客户端,则必须明确上下文路径 和localhost上的auth服务器,否则cookie路径冲突和 这两个应用无法就会话标识符达成一致。
我们在/ uaa上成功运行/和AuthServer上的应用程序。尝试在AuthServer上设置Context-Path。查看来自您的应用和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
答案 1 :(得分:0)
您可以在客户端应用程序中设置RedirecURI:
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
您可以在注册客户端时在oauth2服务器上进行设置。
但是我觉得它会返回到你的ROOT上下文传递,就像它在Root pass上没有足够的持久性或其他应用程序使用这个上下文传递...