django - 如何更改mozilla_django_oidc中的redirect_uri?

标签 django keycloak openid-connect

我想将 Keycloak 集成到 Django 项目中,并且我正在使用 mozilla_django_oidc 来实现此目的。

我遇到的问题是,当我向 keycloak 的授权端点发送请求时,redirect_uri 被设置为:redirect_uri=http%3A%2F%2Fdjango%3A8000%2Foidc %2Fcallback%2F,但应该是我的应用程序的 IP,而不是 django。我不知道为什么用django作为域名。

我在 settings.py 中的配置如下所示:

OIDC_RP_CLIENT_ID = os.environ['OIDC_RP_CLIENT_ID']
OIDC_RP_CLIENT_SECRET = os.environ['OIDC_RP_CLIENT_SECRET']

OIDC_OP_AUTHORIZATION_ENDPOINT = 'http://172.20.159.83:8080/auth/realms/Test/protocol/openid-connect/auth'
OIDC_OP_TOKEN_ENDPOINT = 'http://172.20.159.83:8080/auth/realms/Test/protocol/openid-connect/token'
OIDC_OP_USER_ENDPOINT = 'http://172.20.159.83:8080/auth/realms/Test/protocol/openid-connect/userinfo'
OIDC_OP_JWKS_ENDPOINT = 'http://172.20.159.83:8080/auth/realms/Test/protocol/openid-connect/certs'


LOGIN_REDIRECT_URL = 'http://172.20.159.83/test'
LOGOUT_REDIRECT_URL = 'http://172.20.159.83/'

urls.py 中它是:

path('oidc/', include('mozilla_django_oidc.urls')),

带有所有参数的授权端点请求:

http://172.20.159.83:8080/auth/realms/Test/protocol/openid-connect/auth?response_type=code&scope=openid+email&client_id=MyApplication&redirect_uri=http%3A%2F%2Fdjango%3A8000%2Foidc%2Fcallback%2F&state=3YxLAg8kX1bC1yTDMqKh8L05bIP5z9cB&nonce=jZ6KEZhk9tWOwdXRSqTUoF8lzg7aLU70

那么,正如标题所说,如何更改 redirect uri 的 django 部分以指向我的应用程序的 IP?这个参数如何设置?

最佳答案

据我所知,目前,mozilla_django_oidc 不使用主机名,而是使用 Host header 的值;并重定向到 IP——因为您的重定向 URI (http://django:8000/oidc/callback/) 中的端口也与 8080 不同,我猜您正在使用反向不将 Host header 传递给后端服务器的代理。

对于 nginx,proxy_set_header Host $host ; 可能有帮助,其他反向代理可能有类似的设置。

关于django - 如何更改mozilla_django_oidc中的redirect_uri?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63753836/

相关文章:

java - 基于自定义属性的 Spring Boot SOAP Web 服务的 Keycloak 身份验证

Keycloak:针对特定资源的 2FA 保护

angular - OpenID 连接 : Implicit or Auth Code flow for SPAs?

asp.net-core - 使用 OpenId Connect 进行基于声明的身份验证

Django 将查询结果附加到查询集

python - Django 管理员将上下文添加到index.html

django - 将多个处理器与 django-nose 一起使用会产生 DatabaseError

keycloak - 如何激活keycloak的REST API?

asp.net - IdentityServer混合流-用户成功登录后访问 token 为空

python - NoseTests 的基本设置