以下の内容はhttps://kamatimaru.hatenablog.com/entry/2025/01/19/014835より取得しました。


django-allauthでOIDCログイン失敗の原因をデバッグするtips

課題

Keycloak x django-allauthでOIDCの認証を検証して時に、以下のような認証エラー画面が表示された。

OIDCのフローの赤枠で囲った部分(=Keycloakのログインには成功してリダイレクトでDjangoredirect_uriにコールバックされてきたところ)で発生している。

https://infosec.mozilla.org/guidelines/iam/openid_connect.html#detailed-oidc-authentication-flow

画面からは「ログインに失敗した」ということしか読み取れず、ログも出力されていない。

結論

  • templates/socialaccount/authentication_error.htmlをオーバーライドして、テンプレート上でauth_errorを出力するとエラーの詳細を画面に出力できた。
  • ドメインが合っておらずトークンリクエスト(=OIDCの次のフロー)に失敗していたということが分かった

手順

1. settings.pyにテンプレート検索対象のディレクトリを追加

公式ドキュメントにdjango-allauthのテンプレートのオーバーライド方法の説明があるので、その通りにやる。 https://docs.allauth.org/en/dev/common/templates.html#overriding-the-built-in-templates

settings.py

TEMPLATES = [
    {
        # 省略
        "DIRS": [
            BASE_DIR / "templates"
        ],
        # 省略
    },
]

2. オーバライド用のテンプレートを作成

  • Gitリポジトリのroot直下にtemplates/socialaccount/を作成
  • templates/socialaccount/配下にauthentication_error.htmlを配置

3. テンプレートをオーバーライド

templates/socialaccount/authentication_error.html

{# 省略 #}
{% block content %}
    {# 省略 #}
    {{ auth_error }}
{% endblock content %}

理由

バージョン




以上の内容はhttps://kamatimaru.hatenablog.com/entry/2025/01/19/014835より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14