来自带有 Spring Security (Jhispter) 的 docker 容器的 Keycloak redirect_uri
Posted
技术标签:
【中文标题】来自带有 Spring Security (Jhispter) 的 docker 容器的 Keycloak redirect_uri【英文标题】:Keycloak redirect_uri from docker container with Spring Security (Jhispter) 【发布时间】:2021-10-31 19:21:56 【问题描述】:您好,我在 docker 内的 keycloak 和 springBoot (jhipster) 有一些问题。
我希望我能让自己被理解
我想在本地启动我的所有组件,每个组件都在一个容器中。
我在 nginx 后面有一个角前端
image: ngnix-with-my-angular-project:latest
volumes:
- ./nginx/site.conf:/etc/nginx/conf.d/default.conf
ports:
- "8000:80"
在我的 ngnix conf 中,我有这样的代理通行证
location /oauth2
proxy_pass http://myprojectapp:8080/oauth2;
location /login
proxy_pass http://myprojectapp:8080/login;
在我的 keycloak docker conf 中,我添加了这个 env 变量:
PROXY_ADDRESS_FORWARDING=true
在我的应用程序中,名为 myprojectapp springBoot (jhispter) 我有以下配置
myprojectapp:
.
.
.
SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_OIDC_ISSUER_URI=http://keycloak:9080/auth/realms/myproject
我的 Angular 项目在以下地址可用:http://localhost:8000/
我正在尝试通过 keycloak 进行连接
http://keycloak:9080/auth/realms/myproject/protocol/openid-connect/auth?response_type=code&client_id=web_app&scope=openid%20profile%20email&state=YYY&redirect_uri=http://myprojectapp:8080 /login/oauth2/code/oidc&nonce=XXX
我输入我的凭据,然后我被重定向到 myprojectapp 的 docker 的内部 url
http://myprojectapp:8080/login/oauth2/code/oidc?state=WWW&session_state=YYY&code=ZZZ
我不知道如何配置 redirect_uri 以重定向到我的 Angular 前端
redirect_uri=http://localhost:8000/login/oauth2/code/oidc
【问题讨论】:
Nginx 需要将X-Forwarded*
标头转发到应用程序,因此应用程序将知道反向代理。当然,应用程序必须能够处理该标头。例如。 tomgregory.com/…
【参考方案1】:
感谢@JanGaraj 我已经在我的 nginx conf 中添加了这个
server
listen 80;
.
.
.
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
我的正面暴露在 80 而不是 docker 中的 8000
image: ngnix-with-my-angular-project:latest
volumes:
- ./nginx/site.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
以下配置不会将我重定向到 8000
proxy_set_header X-Forwarded-Port $proxy_protocol_port;
对我来说已经足够了,谢谢
【讨论】:
以上是关于来自带有 Spring Security (Jhispter) 的 docker 容器的 Keycloak redirect_uri的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot + spring security - 如何阻止应用层上的CORS请求?
带有 Spring 会话的 Spring Security SAML
带有 Spring Security 登录和身份验证的 Angular
带有 OpenIDAuthenticationFilter 问题的 Spring Security