1

Ich habe Probleme beim Anschließen von OpenID Connect zwischen einem Keycloak Server und Couchbase Sync Gateway. Meine Einrichtung ist wie folgt: Ich habe eine Nginx, die SSL-Terminierung und Reverse-Proxy für Keycloak und Sync Gateway bietet. So Adresse meine keycloak Authentifizierung ist wie:Keycloak ungültige Weiterleitung uri mit Couchbase Sync Gateway OpenID Connect Nginx

https://auth.domain.com 

Und mein Sync Gateway-Eimer unter:

https://sg.domain.com/sync_gateway 

ich Setup einen vertraulichen Client in keycloak mit Autorisierungscode haben und die Umleitungs-URL für sie ist:

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

Ich verwende den eingebauten OpenIDConnectAuthenticator in Couchbase Lite für .NET. Wenn meine app einen Benutzer zur Keycloak Login-Seite nimmt, erhalte ich:

Invalid parameter: redirect_uri 

Die URL Anmeldung, die zu meiner App weitergegeben geben wird:

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=

in denen kann ich sehen, dass der Redirect_uri ist http. Es sollte https sein.

My Sync Gateway-Konfiguration ist:

{ 
    "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 
      } 
     } 
     } 
    } 
    } 
} 

Meine nginx config:

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 hat Proxy-Setup gemäß: https://github.com/ak1394/keycloak-dockerfiles

Ich bin nicht Sicher, ob dies mit dem Nginx-Setup oder dem Keycloak-Setup zu tun hat.

Irgendwelche Ideen?

Antwort

1

Ich konnte das beheben; wahrscheinlich nicht in der besten Weise, aber es funktioniert für jetzt. Ich musste auch in nginx Config auf:

proxy_redirect http:// https:// 

und in Keycloak, legen Sie die folgende gültige Redirect URLs:

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

Wenn jemand einen Weg findet, dies zu tun, ohne die unsichere gültige Umleitung mit würde ich bin sehr daran interessiert zu wissen, wie ich weiß, das ist nicht zu empfehlen.

EDIT:

Ich habe in Couchbase Forums geschrieben und es scheint, als ob es ein Fehler in Couchbase Mobile (Coucbase Lite oder Sync-Gateway) sein könnte. Sie haben eine ticket in Couchbase Lite für .NET abgelegt.

Verwandte Themen