首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Couchbase同步网关OpenID连接Nginx重定向uri无效

使用Couchbase同步网关OpenID连接Nginx重定向uri无效
EN

Stack Overflow用户
提问于 2017-06-13 07:56:52
回答 1查看 1.3K关注 0票数 3

我在连接密钥披风服务器和Couchbase同步网关之间的OpenID连接时遇到了麻烦。我的设置如下:我有一个nginx,它提供SSL终端和反向代理到Keycloak和Sync网关。所以我的密钥披风认证地址就像:

代码语言:javascript
复制
https://auth.domain.com

我的同步网关桶在:

代码语言:javascript
复制
https://sg.domain.com/sync_gateway

我已经在密钥披风中安装了一个带有授权代码的机密客户端,其重定向网址是:

代码语言:javascript
复制
https://sg.domain.com/sync_gateway/_oidc_callback

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

代码语言:javascript
复制
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。

我的同步网关配置是:

代码语言:javascript
复制
{
  "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配置是:

代码语言:javascript
复制
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设置有关。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-14 11:53:11

我能够解决这个问题;也许不是以最好的方式,但它目前正在起作用。我还需要在中设置:

代码语言:javascript
复制
proxy_redirect http:// https://

在Keycloak中,放置以下有效的重定向urls:

代码语言:javascript
复制
http://sg.domain.com/sync_gateway/_oidc_callback

如果有人在没有不安全、有效的重定向的情况下找到了这样做的方法,我会非常渴望知道,因为我知道这是不推荐的。

编辑:

我已经在Couchbase论坛上发表了文章,看起来它可能是Couchbase (Coucbase或Sync )中的一个bug。他们已经在Couchbase Lite为.NET提交了一份.NET。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44515495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档