Примеры конфигурации для OIDC в DataLens On-premises
Keycloak
Пример конфигурации для Keycloak
const keycloakConfig = {
slug: 'keycloak',
title: 'Keycloak',
type: 'oidc',
defaultRole: 'datalens.visitor',
config: {
issuer: 'https://keycloak.example.org/realms/datalens-enterprise/.well-known/openid-configuration',
clientId: 'datalens',
clientSecret: 'password',
codeChallengeMethod: 'S256',
scope: ['openid', 'profile', 'email', 'roles', 'groups'],
roles: {
path: 'resource_access.datalens.roles',
targetType: 'array-of-strings',
mapping: {
'datalens.admin': 'client.datalens.admin',
'datalens.creator': 'client.datalens.creator',
},
},
syncUserRoles: true,
groups: {
path: 'groups',
targetType: 'array-of-strings', // Рекомендуем настроить Script Mapper и использовать array-of-objects для указания идентификатора и названия группы
},
syncUserGroups: true,
},
};
Настройка клиента Keycloak
Для примера задайте конфигурацию клиента Keycloak:
-
Укажите настройки клиента, для этого нажмите
Clients→ ваш клиент (datalens) →Settings:- Valid redirect URIs:
{UI_APP_ENDPOINT}/auth/callback/oidc. ЗаменитеUI_APP_ENDPOINTна URL вашего приложения, напримерhttp://example.com:8080/auth/callback/oidc. - Client authentication —
on. - Authentication flow —
Standard flow.
- Valid redirect URIs:
-
Чтобы создать роли, нажмите
Clients→ ваш клиент (datalens) →Roles:client.datalens.adminclient.datalens.creator
-
Чтобы создать группу, нажмите
Groups→Create group. -
Чтобы назначить группу и роли пользователю, нажмите
Users→пользователь:- Назначьте роли на вкладке
Role mapping. - Назначьте группу на вкладке
Groups.
- Назначьте роли на вкладке
-
Чтобы настроить scope клиента, нажмите
Client scopes→Create client scope:- Создайте scope
groupsи mapper typeGroup Membership. ВключитеAdd to userinfoв настройках Keycloak. - Создайте scope
rolesили predefined mapperclient roles. ВключитеAdd to userinfoв настройках Keycloak.
- Создайте scope
Пример userinfo для Keycloak
{
"sub": "4d2b6d80-49cf-44fb-94c6-946393dea8c7",
"resource_access": {
"datalens": {
"roles": [
"client.datalens.creator"
]
},
},
"email_verified": true,
"name": "Bob Smith",
"groups": [
"datalens-admin"
],
"preferred_username": "bob",
"given_name": "Bob",
"family_name": "Smith",
"email": "bob@example.org"
}
Пример настройки через переменную окружения AUTH_PROVIDERS_CONFIG
Для настройки провайдеров аутентификации в приложении используется переменная окружения AUTH_PROVIDERS_CONFIG. Эта переменная содержит JSON-строку с массивом конфигураций всех провайдеров аутентификации.
Пример значения переменной окружения AUTH_PROVIDERS_CONFIG:
[
{
"slug": "keycloak",
"title": "Keycloak",
"type": "oidc",
"defaultRole": "datalens.visitor",
"config": {
"issuer": "https://keycloak.example.org/realms/datalens-enterprise/.well-known/openid-configuration",
"clientId": "datalens",
"clientSecret": "password",
"codeChallengeMethod": "S256",
"scope": ["openid", "profile", "email", "roles", "groups"],
"roles": {
"path": "resource_access.datalens.roles",
"targetType": "array-of-strings",
"mapping": {
"datalens.admin": "client.datalens.admin",
"datalens.creator": "client.datalens.creator"
}
},
"syncUserRoles": true,
"groups": {
"path": "groups",
"targetType": "array-of-strings"
},
"syncUserGroups": true
}
}
]
Предыдущая
Следующая