OpenID Connect
Предварительная настройка
- Через django-admin добавить Site если ещё не добавлен дефолтный (/admin/sites/site/).
- Через django-admin добавить SocialApp, который хранит в себе настройки подключения (/admin/socialaccount/socialapp/add/). Пример настроек смотреть в разделе ниже.
- В настройках django-admin (/admin/constance/config/) включить настройку AUTH_IS_OIDC_ENABLED и указать в AUTH_OIDC_PROVIDER_ID значение provider id из предыдущего пункта.
Как локально работать
- Собрать Docker образ asu-s-core (см. local_run.md)
- Запустить
docker compose up - Через 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"
}- В настройках constance
AUTH_IS_OIDC_ENABLED=True
AUTH_OIDC_PROVIDER_ID=dexGET http://localhost:8000/api/v1/auth/oidc/login/перейти по урлу из ответа в браузере, для логина и пароля ввестиadmin@example.comиpassword, затем grant access- Далее dex сделает редирект и в URL добавит параметр
code, его нужно скопировать и отправить запросPOST /api/v1/auth/oidc/login/callback/в ответе будут получены access и refresh токены.