KeyCloak redirect invalide uri avec Couchbase Sync Gateway OpenID Connect Nginx

Je n’arrive pas à connecter OpenID Connect entre un serveur Keycloak et Couchbase Sync Gateway. Ma configuration est la suivante: j’ai un nginx qui fournit une terminaison SSL et un proxy inverse à Keycloak et Sync Gateway. Donc, mon adresse d’authentification keycloak est comme:

https://auth.domain.com 

Et mon compartiment Sync Gateway est à:

 https://sg.domain.com/sync_gateway 

J’ai configuré un client confidentiel en keycloak avec le code d’autorisation et l’URL de redirection pour cela est:

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

J’utilise le OpenIDConnectAuthenticator intégré dans Couchbase Lite pour .NET. Lorsque mon application emmène un utilisateur sur la page de connexion Keycloak, je reçois:

 Invalid parameter: redirect_uri 

L’URL de connexion transmise à mon application est la suivante:

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=

dans lequel je peux voir que le redirect_uri est http. Ce devrait être https.

Ma config de passerelle de synchronisation est:

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

Mon nginx config est:

 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_certificatee /local/ssl/domain_com.crt; ssl_certificatee_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_certificatee /local/ssl/domain_com.crt; ssl_certificatee_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 a la configuration de proxy selon: https://github.com/ak1394/keycloak-dockerfiles

Je ne suis pas sûr que cela soit lié à la configuration nginx ou à la configuration de keycloak.

Des idées?

J’ai pu réparer ça; probablement pas de la meilleure façon mais cela fonctionne pour le moment. Je devais aussi mettre en nginx config:

 proxy_redirect http:// https:// 

et dans Keycloak, mettez les URL de redirection suivantes:

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

Si quelqu’un trouve le moyen de le faire sans avoir la redirection non sécurisée, je serais très désireux de savoir, car je sais que ce n’est pas recommandé.

MODIFIER:

J’ai posté dans les forums Couchbase et il semble que cela puisse être un bogue dans Couchbase Mobile (Coucbase Lite ou Sync Gateway). Ils ont déposé un ticket dans Couchbase Lite pour .NET.