gpt4 book ai didi

nginx - 使用 Couchbase Sync Gateway OpenID Connect Nginx 的 Keycloak 无效重定向 uri

转载 作者:行者123 更新时间:2023-12-02 01:12:33 24 4
gpt4 key购买 nike

我在连接 Keycloak 服务器和 Couchbase Sync Gateway 之间的 OpenID Connect 时遇到问题。我的设置如下:我有一个 nginx,它为 Keycloak 和 Sync Gateway 提供 SSL 终止和反向代理。所以我的 keycloak 认证地址是这样的:

https://auth.domain.com

我的 Sync Gateway 存储桶位于:

https://sg.domain.com/sync_gateway

我在 keycloak 中设置了一个带有授权码的 secret 客户端,它的重定向 url 是:

https://sg.domain.com/sync_gateway/_oidc_callback

我在 Couchbase Lite for .NET 中使用内置的 OpenIDConnectAuthenticator。当我的应用将用户带到 Keycloak 登录页面时,我得到:

Invalid parameter: redirect_uri

传递到我的应用程序的登录 url 是:

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。

我的同步网关配置是:

{
"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 standalone-ha.xml 的代理设置如下:https://github.com/ak1394/keycloak-dockerfiles

我不确定这是否与 nginx 设置或 keycloak 设置有关。

有什么想法吗?

最佳答案

我能够解决这个问题;可能不是最好的方式,但它现在正在工作。我还需要在 nginx 配置中设置:

proxy_redirect http:// https://

在 Keycloak 中,输入以下有效的重定向 URL:

http://sg.domain.com/sync_gateway/_oidc_callback

如果有人在没有不安全的有效重定向的情况下找到了执行此操作的方法,我会非常想知道,因为我知道不推荐这样做。

编辑:

我已经在 Couchbase Forums 发布了看起来它可能是 Couchbase Mobile(Coucbase Lite 或 Sync Gateway)中的一个错误。他们已经提交了 ticket在 Couchbase Lite for .NET 中。

关于nginx - 使用 Couchbase Sync Gateway OpenID Connect Nginx 的 Keycloak 无效重定向 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44515495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com