Keycloak无效重定向uri与Couchbase同步网关OpenID连接Nginx
我无法连接Keycloak服务器和Couchbase同步网关之间的OpenID连接。我的设置如下:我有一个nginx为Keycloak和Sync Gateway提供SSL终止和反向代理。所以我keycloak认证地址是这样的:Keycloak无效重定向uri与Couchbase同步网关OpenID连接Nginx
https://auth.domain.com
我的SYNC网关桶是:
https://sg.domain.com/sync_gateway
我已经建立了机密的客户与授权码和重定向URL keycloak它是:
https://sg.domain.com/sync_gateway/_oidc_callback
我在Couchbase Lite for .NET中使用内置的OpenIDConnectAuthenticator。当我的应用程序需要用户到Keycloak登录页面,我得到:
Invalid parameter: redirect_uri
正在传递传递给我的应用程序的登录网址是:
https://auth.domain.com/auth/realms/realm/protocol/openid-connect/auth?access_type=offline&client_id=couchbase-sync-gateway&prompt=consent&redirect_uri=http%3A%2F%2Fsg.domain.com%2Fsync_gateway%2F_oidc_callback&response_type=code&scope=openid+email&state=
中,我可以看到redirect_uri是http。它应该是https。
我SYNC网关的配置是:
{
"log": ["*"],
"databases": {
"sync_gateway": {
"server": "http://cbserver:8091",
"bucket": "sync_gateway",
"users": { "GUEST": { "disabled": true, "admin_channels": ["*"] } },
"oidc": {
"providers": {
"keycloakauthcode": {
"issuer":"https://auth.domain.com/auth/realms/realm",
"client_id":"couchbase-sync-gateway",
"validation_key":"myclientid",
"register":true
}
}
}
}
}
}
我的nginx的配置是:
events {
worker_connections 768;
multi_accept on;
}
http {
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
large_client_header_buffers 4 32k;
upstream auth_backend {
server server1:port1;
}
upstream cb_sync_gateway {
server server2:port2;
}
server { # AUTH
listen 443 ssl;
server_name auth.domain.com;
ssl on;
ssl_certificate /local/ssl/domain_com.crt;
ssl_certificate_key /local/ssl/domain_com.key;
add_header Content-Security-Policy upgrade-insecure-requests;
location/{
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://auth_backend;
}
}
server {
listen 443 ssl;
server_name sg.domain.com;
ssl on;
ssl_certificate /local/ssl/domain_com.crt;
ssl_certificate_key /local/ssl/domain_com.key;
add_header Content-Security-Policy upgrade-insecure-requests;
location/{
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://cb_sync_gateway;
}
}
}
Keycloak独立-ha.xml具有代理设置按:https://github.com/ak1394/keycloak-dockerfiles
我不是确定这是否与nginx设置或keycloak设置有关。
任何想法?
我能够解决这个问题;可能不是最好的方式,但它现在工作。我需要在nginx的配置也成立:
proxy_redirect http:// https://
和Keycloak,把下面的有效导向网址:
http://sg.domain.com/sync_gateway/_oidc_callback
如果有人发现了一个办法做到这一点,而无需不安全有效的重定向我会非常热衷于知道,因为我知道这不被推荐。
编辑:
我已经张贴在Couchbase Forums,它似乎是它可以在Couchbase移动(Coucbase精简版或SYNC网关)的错误。他们已经在Couchbase Lite for .NET中提交了ticket。