Skip to content

OpenID Connect

Предварительная настройка

  1. Через django-admin добавить Site если ещё не добавлен дефолтный (/admin/sites/site/).
  2. Через django-admin добавить SocialApp, который хранит в себе настройки подключения (/admin/socialaccount/socialapp/add/). Пример настроек смотреть в разделе ниже.
  3. В настройках django-admin (/admin/constance/config/) включить настройку AUTH_IS_OIDC_ENABLED и указать в AUTH_OIDC_PROVIDER_ID значение provider id из предыдущего пункта.

Как локально работать

  1. Собрать Docker образ asu-s-core (см. local_run.md)
  2. Запустить docker compose up
  3. Через django admin добавить social app, обязательно перенести example.app в выбранные sites
provider: openid connect
name: dex
client id: asu-s-core
secret: ZXhhbXBsZS1hcHAtc2VjcmV0
settings: {
    "issuer": "http://localhost:5556/dex",
    "server_url": "http://localhost:5556/",
    "fetch_userinfo": true,
    "token_endpoint": "http://dex:5556/dex/token",
    "token_auth_method": "client_secret_basic",
    "userinfo_endpoint": "http://dex:5556/dex/userinfo",
    "oauth_pkce_enabled": false,
    "end_session_endpoint": null,
    "authorization_endpoint": "http://localhost:5556/dex/auth"
}
  1. В настройках constance
AUTH_IS_OIDC_ENABLED=True
AUTH_OIDC_PROVIDER_ID=dex
  1. GET http://localhost:8000/api/v1/auth/oidc/login/ перейти по урлу из ответа в браузере, для логина и пароля ввести admin@example.com и password, затем grant access
  2. Далее dex сделает редирект и в URL добавит параметр code, его нужно скопировать и отправить запрос POST /api/v1/auth/oidc/login/callback/ в ответе будут получены access и refresh токены.