---
metadata:
  - name: generator
    content: Diplodoc Platform v5.63.0
alternate:
  - ru/concepts/auth-providers/oidc-examples
  - href: ru/concepts/auth-providers/oidc-examples.md
    type: text/markdown
    title: Markdown version
csp:
  - script-src:
      - https://mc.yandex.ru
    img-src:
      - https://mc.yandex.ru
    connect-src:
      - https://mc.yandex.ru
      - wss://mc.yandex.ru
    child-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-src:
      - 'blob:'
      - https://mc.yandex.ru
    frame-ancestors:
      - 'blob:'
      - https://mc.yandex.ru
canonical: ru/concepts/auth-providers/oidc-examples.html
title: Примеры конфигурации для OIDC в DataLens On-premises
description: В этом разделе приведены примеры конфигурации для OIDC в DataLens On-premises.
vcsPath: ru/concepts/auth-providers/oidc-examples.md
---

# Примеры конфигурации для OIDC в DataLens On-premises

## Keycloak {#keycloak}

### Пример конфигурации для Keycloak {#keycloak-config-example}

```javascript
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-settings-example}

Для [примера](#keycloak-config-example) задайте конфигурацию клиента Keycloak:

1. Укажите настройки клиента, для этого нажмите `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`.

1. Чтобы создать роли, нажмите `Clients` → ваш клиент (`datalens`) → `Roles`:

   * `client.datalens.admin`
   * `client.datalens.creator`

1. Чтобы создать группу, нажмите `Groups` → `Create group`.
1. Чтобы назначить группу и роли пользователю, нажмите `Users` → `пользователь`:

   * Назначьте роли на вкладке `Role mapping`.
   * Назначьте группу на вкладке `Groups`.

1. Чтобы настроить scope клиента, нажмите `Client scopes` → `Create client scope`:

   * Создайте scope `groups` и mapper type `Group Membership`. Включите `Add to userinfo` в настройках Keycloak.
   * Создайте scope `roles` или predefined mapper `client roles`. Включите `Add to userinfo` в настройках Keycloak.


### Пример userinfo для Keycloak {#keycloak-userinfo-example}

```json
{
  "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}

Для настройки провайдеров аутентификации в приложении используется переменная окружения `AUTH_PROVIDERS_CONFIG`. Эта переменная содержит JSON-строку с массивом конфигураций всех провайдеров аутентификации.

Пример значения переменной окружения `AUTH_PROVIDERS_CONFIG`:

```json
[
  {
    "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
    }
  }
]
```
