OpenID — открытый стандарт децентрализованной системы аутентификации, предоставляющей пользователю возможность создать единую учётную запись для аутентификации на множестве не связанных друг с другом интернет-ресурсов.
Чтобы настроить авторизацию OpenID на сайте Picvario требуется:
Произвести настройки на стороне Google:
- Под учетной записью администратора организации перейти по ссылке https://console.developers.google.com/apis/credentials.
- Создать новое веб-приложение (например, с названием Picvario).
- Получить ClientID и Client Secret в панели управления:
- В список разрешенных URI добавить адрес:
<site_url>/api/v1/users/oidc/callback
Произвести настройка на стороне Picvario:
- Продублировать переменную окружения из frontend SITE_BASE_URL=< какой-то url >
- В Options тенанта ( https://<tenant-name>.<site_url>/admin/options/option/ ) или хостед-версии ( https://<site_url>/admin/options/option/ ) создать параметр: OPENID_AUTH_ENABLED: True.
После того как параметр будет добавлен АВТОМАТИЧЕСКИ создадутся ещё 11 параметров, нужно будет скорректировать их значения на:
KEY |
VAL |
PUBLIC |
|
---|---|---|---|
OIDC_TOKEN_USE_BASIC_AUTH | True |
False
|
|
OIDC_RP_SIGN_ALGO | RS256 |
False
|
|
OIDC_RP_SCOPES | email profile openid |
False
|
|
OIDC_RP_CLIENT_SECRET | (получаем у гугла) |
False
|
|
OIDC_RP_CLIENT_ID | (получаем у гугла) |
False
|
|
OIDC_OP_USER_ENDPOINT | https://openidconnect.googleapis.com/v1/userinfo |
False
|
|
OIDC_OP_TOKEN_ENDPOINT | https://oauth2.googleapis.com/token |
False
|
|
OIDC_OP_JWKS_ENDPOINT | https://www.googleapis.com/oauth2/v3/certs |
False |
|
OIDC_OP_AUTHORIZATION_ENDPOINT | https://accounts.google.com/o/oauth2/v2/auth |
False
|
ВАЖНО! У всех вышеупомянутых опций свойство Public должно быть False! (выставлено по умолчанию)
Если нужно разрешить просмотр активов анонимным пользователям, используется параметр ALLOW_ANONYMOUS_USERS = True. Этот параметр должен быть публичным (Public = True) вне зависимости от значения самого параметра.
Для того чтобы разрешить авторизацию И через Gsuite И через Picvario отвечает параметр MULTI_AUTH. Этот параметр также является публичным (Public = True).
MULTI_AUTH=True/False
- параметр, определяющий, возможна ли аутентификация несколькими доступными способами — стандартным и через OpenID. В UI этот вариант отображается страницей со стандартными полями логин и пароль и дополнительной кнопкой внизу «Войти через корпоративный аккаунт». В случае False, вариант аутентификации определяется флагом
OPENID_AUTH_ENABLED
.
Последовательность поиска публичных ключей для верификации токенов / Приоритет опций:
OIDC_RP_IDP_SIGN_KEY_PATH
OIDC_RP_IDP_SIGN_KEY
OIDC_OP_JWKS_ENDPOINT
При появлении ошибок типа «SuspiciousOperation"
или «JWS token verification failed"
необходимо убедиться в отсутствии конфликта между данными опциями.
Для GSuite нужно указывать только OIDC_OP_JWKS_ENDPOINT
, остальные опции из этого списка должны быть пустыми!