程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了mozilla-django-oidc 与 django 3 上的 keycloak大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决mozilla-django-oidc 与 django 3 上的 keycloak?

开发过程中遇到mozilla-django-oidc 与 django 3 上的 keycloak的问题如何解决?下面主要结合日常开发的经验,给出你关于mozilla-django-oidc 与 django 3 上的 keycloak的解决方法建议,希望对你解决mozilla-django-oidc 与 django 3 上的 keycloak有所启发或帮助;

我正在尝试使用 mozilla-django-oidc (1.2.4) 将 Django (3.2) 与 Keycloak (12.0.2) 连接起来。

单击“登录”按钮(根据 documentation 使用 oIDc_authentication_init 视图)时,我将重定向到 keycloak,但在成功登录后出现此错误:

Exception Type: httpError at /oIDc/callBACk/
Exception Value: 404 ClIEnt Error: Not Found for url: http://localhost:8080/auth/realms/mycorp/protocol/openID-connect/token

django 设置的相关设置有:

setTings.py

INSTALLED_APPS = [
    ...,'mozilla_django_oIDc',]
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.BACkends.ModelBACkend','mozilla_django_oIDc.auth.oIDCAuthenticationBACkend',),OIDC_AUTH_URI = 'http://localhost:8080/auth/realms/mycorp'
OIDC_CALLBACK_PUBliC_URI = 'http://localhost'

LOGIN_REDIRECT_URL = OIDC_CALLBACK_PUBliC_URI
logoUT_REDIRECT_URL = OIDC_AUTH_URI + '/protocol/openID-connect/logout?redirect_uri=' + OIDC_CALLBACK_PUBliC_URI

OIDC_RP_CLIENT_ID = 'django'
OIDC_RP_CLIENT_SECRET = os.environ.get("OIDC_CLIENT_SECRET")
OIDC_RP_ScopES = 'openID email profile'

# Keycloak-specific (as per http://KEYCLOAK_SERVER/auth/realms/REALM/.well-kNown/openID-configuration)
OIDC_OP_AUTHORIZATION_ENDPOINT = OIDC_AUTH_URI + '/protocol/openID-connect/auth'
OIDC_OP_TOKEN_ENDPOINT = OIDC_AUTH_URI + '/protocol/openID-connect/token'
OIDC_OP_user_ENDPOINT = OIDC_AUTH_URI + '/protocol/openID-connect/userinfo'
OIDC_OP_JWKS_ENDPOINT = OIDC_AUTH_URI + '/protocol/openID-connect/certs'

urls.py

urlpatterns = [
    ...,path('oIDc/',include('mozilla_django_oIDc.urls')),]

和详细错误:

httpError at /oIDc/callBACk/
404 ClIEnt Error: Not Found for url: http://localhost:8080/auth/realms/mycorp/protocol/openID-connect/token
request Method: GET
request URL:    http://localhost/oIDc/callBACk/?state=cBtEeSIHNNdsgMBUjPXkq2RwVsspKsZF&session_state=a5b50fc0-0ec2-4def-8ec8-db1e4a95450f&code=864a2e21-75a7-42d8-8249-e9397be9b64b.a5b50fc0-0ec2-4def-8ec8-db1e4a95450f.2ec7cfbf-b5ee-4f9a-9d4b-012fdc0f9630
Django Version: 3.2
Exception Type: httpError
Exception Value:    
404 ClIEnt Error: Not Found for url: http://localhost:8080/auth/realms/mycorp/protocol/openID-connect/token
Exception LOCATIOn: /usr/local/lib/python3.8/site-packages/requests/models.py,line 943,in raise_for_status
Python Executable:  /usr/local/bin/python
Python Version: 3.8.9
Python Path:    
['/home/maat/src','/usr/local/bin','/usr/local/lib/python38.zip','/usr/local/lib/python3.8','/usr/local/lib/python3.8/lib-dynload','/usr/local/lib/python3.8/site-packages']
Server time:    Tue,27 Apr 2021 19:08:01 +0200

显然一切都按照文档中的说明进行配置,但我看不出它失败的原因......

解决方法

直到我意识到测试是在 docker-compose 上运行时,404 对我来说还不够清楚,因此对 localhost 的访问与主机不同。

在主机网络模式下运行或通过其域名到达keycloak修复它

大佬总结

以上是大佬教程为你收集整理的mozilla-django-oidc 与 django 3 上的 keycloak全部内容,希望文章能够帮你解决mozilla-django-oidc 与 django 3 上的 keycloak所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。