Настройка аутентификации Generic OAuth

Warning

[ru] DOCS_SHARED: "docs/grafana/latest/setup-grafana/configure-access/configure-authentication/generic-oauth/index.ru.md" ("/hugo/content/docs/grafana/latest/setup-grafana/configure-access/configure-authentication/generic-oauth/index.ru.md:24:1") shared directory "docs/grafana/latest/shared" not found

Grafana предоставляет интеграции OAuth2 для следующих провайдеров аутентификации:

Если вашего провайдера OAuth2 нет в списке, вы можете использовать аутентификацию Generic OAuth.

В этом разделе описано, как настроить аутентификацию Generic OAuth с помощью разных методов, и приведены примеры настройки Generic OAuth с конкретными провайдерами OAuth2.

Перед началом

Чтобы следовать этому руководству:

  • Убедитесь, что вы знаете, как создать приложение OAuth2 у вашего провайдера OAuth2. Дополнительную информацию смотрите в документации вашего провайдера OAuth2.
  • Убедитесь, что ваш провайдер идентификации возвращает информацию, совместимую с OpenID UserInfo, например утверждение sub.
  • Если вы используете refresh-токены, убедитесь, что вы знаете, как их настроить у вашего провайдера OAuth2. Дополнительную информацию смотрите в документации вашего провайдера OAuth2.

Note

Если пользователи используют одинаковый адрес электронной почты в Entra ID и в других провайдерах аутентификации (например, Grafana.com), вам нужно выполнить дополнительную настройку, чтобы гарантировать правильное сопоставление пользователей. Дополнительную информацию см. в документации Использование одного и того же адреса электронной почты для входа через разных провайдеров идентификации.

Настройка клиента аутентификации generic OAuth через интерфейс Grafana

Как администратор Grafana вы можете настроить клиент Generic OAuth изнутри Grafana через интерфейс Generic OAuth. Для этого перейдите на страницу Administration > Authentication > Generic OAuth и заполните форму. Если у вас есть текущая конфигурация в файле конфигурации Grafana, форма будет предварительно заполнена этими значениями, в противном случае форма будет содержать значения по умолчанию.

После того как вы заполнили форму, нажмите Save, чтобы сохранить конфигурацию. Если сохранение прошло успешно, Grafana применит новые конфигурации.

Если вам нужно сбросить изменения, сделанные в интерфейсе, обратно к значениям по умолчанию, нажмите Reset. После сброса изменений Grafana применит конфигурацию из файла конфигурации Grafana (если есть какая-либо конфигурация) или значения по умолчанию.

Note

Если вы запускаете Grafana в режиме высокой доступности, изменения конфигурации могут примениться не ко всем экземплярам Grafana сразу. Возможно, вам придётся подождать несколько минут, пока конфигурация распространится на все экземпляры Grafana.

Дополнительную информацию см. в разделе параметры конфигурации.

Настройка клиента аутентификации generic OAuth с помощью провайдера Terraform

terraform
resource "grafana_sso_settings" "generic_sso_settings" {
  provider_name = "generic_oauth"
  oauth2_settings {
    name              = "Auth0"
    auth_url          = "https://<domain>/authorize"
    token_url         = "https://<domain>/oauth/token"
    api_url           = "https://<domain>/userinfo"
    client_id         = "<client id>"
    client_secret     = "<client secret>"
    allow_sign_up     = true
    auto_login        = false
    scopes            = "openid profile email offline_access"
    use_pkce          = true
    use_refresh_token = true
  }
}

Полное справочное руководство по использованию ресурса grafana_sso_settings см. в Terraform Registry.

Настройка клиента аутентификации generic OAuth с помощью файла конфигурации Grafana

Убедитесь, что у вас есть доступ к файлу конфигурации Grafana.

Шаги

Чтобы интегрировать вашего провайдера OAuth2 с Grafana с помощью нашей аутентификации Generic OAuth, выполните следующие шаги:

  1. Создайте приложение OAuth2 у выбранного вами провайдера OAuth2.

  2. Установите callback URL для вашего приложения OAuth2 в http://<my_grafana_server_name_or_ip>:<grafana_server_port>/login/generic_oauth.

    Убедитесь, что callback URL — это полный HTTP-адрес, который вы используете для доступа к Grafana через браузер, но с добавленным путём /login/generic_oauth.

    Чтобы callback URL был корректным, может потребоваться установить параметр root_url в разделе [server] файла конфигурации Grafana. Например, если вы обслуживаете Grafana за прокси.

  3. Обратитесь к следующей таблице, чтобы обновить значения полей, расположенных в разделе [auth.generic_oauth] файла конфигурации Grafana:

    Поле Описание
    client_id, client_secret Эти значения должны совпадать с client ID и client secret вашего приложения OAuth2.
    auth_url Конечная точка авторизации вашего провайдера OAuth2.
    api_url Конечная точка информации о пользователе вашего провайдера OAuth2. Информация, возвращаемая этой конечной точкой, должна быть совместима с OpenID UserInfo.
    enabled Включает аутентификацию Generic OAuth. Установите это значение в true.

    Просмотрите список других параметров конфигурации Generic OAuth и заполните их по мере необходимости.

  4. Необязательно: Настройте refresh-токен:

    a. Расширьте поле scopes раздела [auth.generic_oauth] в файле конфигурации Grafana областью refresh-токена, используемой вашим провайдером OAuth2.

    b. Установите use_refresh_token в true в разделе [auth.generic_oauth] в файле конфигурации Grafana.

    c. Включите refresh-токен у провайдера, если это требуется.

  5. Настройте сопоставление ролей.

  6. Необязательно: Настройте синхронизацию команд.

  7. Перезапустите Grafana.

    Теперь вы должны увидеть кнопку входа Generic OAuth на странице входа и иметь возможность войти или зарегистрироваться у вашего провайдера OAuth2.

Настройка входа

Grafana может определить логин пользователя из ID-токена OAuth2, информации о пользователе, полученной от конечной точки UserInfo OAuth2, или access-токена OAuth2. Grafana просматривает эти источники в указанном порядке, пока не найдёт логин. Если логин не найден, то логин пользователя устанавливается в адрес электронной почты пользователя.

Important

Электронная почта обязательна для успешной регистрации и входа с Generic OAuth. Даже если вы сопоставляете login из другого утверждения (например, sub), Grafana всё равно требует наличия у пользователя адреса электронной почты. Убедитесь, что ваш провайдер возвращает утверждение email, или настройте email_attribute_path, чтобы Grafana мог его определить. Включение области email настоятельно рекомендуется (для провайдеров OIDC используйте openid profile email).

Обратитесь к следующей таблице за информацией о том, что настраивать в зависимости от того, как ваш провайдер Oauth2 возвращает логин пользователя:

Источник логина Требуемая конфигурация
Поле login или username ID-токена OAuth2. N/A
Другое поле ID-токена OAuth2. Установите параметр конфигурации login_attribute_path.
Поле login или username информации о пользователе от конечной точки UserInfo. N/A
Другое поле информации о пользователе от конечной точки UserInfo. Установите параметр конфигурации login_attribute_path.
Поле login или username access-токена OAuth2. N/A
Другое поле access-токена OAuth2. Установите параметр конфигурации login_attribute_path.

Использование утверждения sub для логина

Большинство провайдеров OAuth2 предоставляют стабильный идентификатор субъекта в утверждении sub. Вы можете использовать его для заполнения логина Grafana, установив login_attribute_path в sub. Поскольку электронная почта всё ещё обязательна, также убедитесь, что Grafana может определить адрес электронной почты пользователя (например, включив область email или сопоставив пользовательское поле через email_attribute_path).

Пример конфигурации:

ini
[auth.generic_oauth]
enabled = true
scopes = openid profile email
login_attribute_path = sub
# If your provider does not return `email` at the top level, map it explicitly
# email_attribute_path = user.email

Настройка отображаемого имени

Grafana может определить отображаемое имя пользователя из ID-токена OAuth2, информации о пользователе, полученной от конечной точки UserInfo OAuth2, или access-токена OAuth2. Grafana просматривает эти источники в указанном порядке, пока не найдёт отображаемое имя. Если отображаемое имя не найдено, вместо него отображается логин пользователя.

Обратитесь к следующей таблице за информацией о том, что вам нужно настроить в зависимости от того, как ваш провайдер Oauth2 возвращает имя пользователя:

Источник отображаемого имени Требуемая конфигурация
Поле name или display_name ID-токена OAuth2. N/A
Другое поле ID-токена OAuth2. Установите параметр конфигурации name_attribute_path.
Поле name или display_name информации о пользователе от конечной точки UserInfo. N/A
Другое поле информации о пользователе от конечной точки UserInfo. Установите параметр конфигурации name_attribute_path.
Поле name или display_name access-токена OAuth2. N/A
Другое поле access-токена OAuth2. Установите параметр конфигурации name_attribute_path.

Настройка адреса электронной почты

Grafana может определить адрес электронной почты пользователя из ID-токена OAuth2, информации о пользователе, полученной от конечной точки UserInfo OAuth2, access-токена OAuth2 или конечной точки /emails OAuth2. Grafana просматривает эти источники в указанном порядке, пока не найдёт адрес электронной почты. Если адрес электронной почты не найден, то адрес электронной почты пользователя устанавливается в пустую строку.

Обратитесь к следующей таблице за информацией о том, что настраивать в зависимости от того, как провайдер Oauth2 возвращает адрес электронной почты пользователя:

Источник адреса электронной почты Требуемая конфигурация
Поле email ID-токена OAuth2. N/A
Карта attributes ID-токена OAuth2. Установите параметр конфигурации email_attribute_name. По умолчанию Grafana ищет email по ключу email:primary.
Поле upn ID-токена OAuth2. N/A
Поле email информации о пользователе от конечной точки UserInfo. N/A
Другое поле информации о пользователе от конечной точки UserInfo. Установите параметр конфигурации email_attribute_path.
Поле email access-токена OAuth2. N/A
Карта attributes access-токена OAuth2. Установите параметр конфигурации email_attribute_name. По умолчанию Grafana ищет email по ключу email:primary.
Поле upn access-токена OAuth2. N/A
Другое поле access-токена OAuth2. Установите параметр конфигурации email_attribute_path.
Адрес электронной почты, помеченный как основной, из конечной точки /emails провайдера OAuth2 (полученной путём добавления /emails к URL,
настроенному с помощью api_url)
N/A

Настройка refresh-токена

Когда пользователь входит в систему с помощью провайдера OAuth2, Grafana проверяет, что access-токен не истёк. Когда access-токен истекает, Grafana использует предоставленный refresh-токен (если он есть) для получения нового access-токена.

Grafana использует refresh-токен для получения нового access-токена без необходимости для пользователя входить в систему снова. Если refresh-токен не существует, Grafana выполняет выход пользователя из системы после истечения access-токена.

Чтобы настроить Generic OAuth на использование refresh-токена, установите параметр конфигурации use_refresh_token в true и выполните один или оба следующих шага, если это требуется:

  1. Расширьте поле scopes раздела [auth.generic_oauth] в файле конфигурации Grafana дополнительными областями.
  2. Включите refresh-токен у провайдера.

Note

Переключатель функции accessTokenExpirationCheck был удалён в Grafana v10.3.0, и вместо него для настройки получения refresh-токена и проверки истечения access-токена будет использоваться значение конфигурации use_refresh_token.

Настройка валидации ID-токена JWT

По умолчанию Grafana извлекает информацию о пользователе из ID-токенов, не проверяя их криптографические подписи. Для повышения безопасности вы можете включить валидацию подписи JWT, чтобы гарантировать, что ID-токены подлинны и не были подделаны.

Чтобы включить валидацию ID-токена JWT:

  1. Установите validate_id_token в true в разделе [auth.generic_oauth] файла конфигурации Grafana.

  2. Настройте jwk_set_url с URL конечной точки JSON Web Key Set (JWKS) вашего провайдера OAuth2. Эта конечная точка предоставляет публичные ключи, используемые для проверки подписей JWT.

    Распространённые расположения конечных точек JWKS:

    • Провайдеры OIDC: https://<provider-domain>/.well-known/jwks.json
    • Auth0: https://<tenant>.auth0.com/.well-known/jwks.json
    • Keycloak: https://<keycloak-domain>/realms/<realm>/.well-known/openid-configuration (содержит jwks_uri)

Пример конфигурации:

ini
[auth.generic_oauth]
enabled = true
validate_id_token = true
jwk_set_url = https://your-provider.com/.well-known/jwks.json
client_id = <client id>
client_secret = <client secret>
auth_url = https://your-provider.com/authorize
token_url = https://your-provider.com/token
api_url = https://your-provider.com/userinfo

Note

Когда валидация JWT включена, Grafana кэширует ключи JWKS для повышения производительности. Кэш учитывает заголовок Cache-Control из ответа конечной точки JWKS. Если срок истечения кэша не указан, ключи кэшируются на 5 минут по умолчанию.

Caution

Если validate_id_token установлен в true, вы должны настроить jwk_set_url. Аутентификация завершится неудачей, если JWK Set URL не предоставлен или если подпись ID-токена не может быть проверена.

Настройка сопоставления ролей

Если только не включён параметр skip_org_role_sync, роль пользователя будет установлена в роль, полученную от провайдера аутентификации при входе пользователя.

Роль пользователя извлекается с помощью выражения JMESPath из параметра конфигурации role_attribute_path. Grafana сначала вычислит выражение, используя ID-токен OAuth2. Если роль не найдена, выражение будет вычислено с использованием информации о пользователе, полученной от конечной точки UserInfo. Если роль всё ещё не найдена, выражение будет вычислено с использованием access-токена OAuth2. Чтобы сопоставить роль администратора сервера, используйте параметр конфигурации allow_assign_grafana_admin. Дополнительную информацию см. в разделе параметры конфигурации.

Если допустимая роль не найдена, пользователю назначается роль, указанная параметром auto_assign_org_role. Вы можете отключить это назначение роли по умолчанию, установив role_attribute_strict = true. Этот параметр запрещает доступ пользователю, если не возвращена роль или возвращена недопустимая роль после вычисления выражений role_attribute_path и org_mapping.

Вы можете использовать параметры конфигурации org_attribute_path и org_mapping для назначения пользователя организациям и указания его роли. Дополнительную информацию см. в разделе Пример сопоставления ролей организации. Если указаны и сопоставление роли организации (org_mapping), и обычное сопоставление роли (role_attribute_path), то пользователь получит более высокую из двух сопоставленных ролей.

Чтобы упростить настройку правильного выражения JMESPath, перейдите на JMESPath, чтобы протестировать и оценить выражения с пользовательскими полезными нагрузками.

Note

При использовании org_attribute_path значение, возвращаемое выражением JMESPath, должно быть массивом, а не строкой.

Примеры сопоставления ролей

В этом разделе приведены примеры выражений JMESPath, используемых для сопоставления ролей.

Сопоставление роли организации пользователя

В этом примере пользователю предоставлена роль Editor. Назначенная роль основана на значении свойства role, которое должно быть допустимой ролью Grafana, такой как Admin, Editor, Viewer или None.

Полезная нагрузка:

JSON
{
    ...
    "role": "Editor",
    ...
}

Конфигурация:

Bash
role_attribute_path = role

В следующем более сложном примере пользователю предоставлена роль Admin. Это потому, что он является членом группы admin своего провайдера OAuth2. Если бы пользователь был членом группы editor, ему была бы предоставлена роль Editor, в противном случае Viewer.

Полезная нагрузка:

JSON
{
    ...
    "groups": [
        "engineer",
        "admin",
    ],
    ...
}

Конфигурация:

Bash
role_attribute_path = contains(groups[*], 'admin') && 'Admin' || contains(groups[*], 'editor') && 'Editor' || 'Viewer'
Сопоставление роли администратора сервера

В следующем примере пользователю предоставляется роль администратора сервера Grafana.

Полезная нагрузка:

JSON
{
    ...
    "roles": [
        "admin",
    ],
    ...
}

Конфигурация:

ini
role_attribute_path = contains(roles[*], 'admin') && 'GrafanaAdmin' || contains(roles[*], 'editor') && 'Editor' || 'Viewer'
allow_assign_grafana_admin = true
Сопоставление одной роли всем пользователям

В этом примере всем пользователям будет назначена роль Viewer независимо от информации о пользователе, полученной от провайдера идентификации.

Конфигурация:

ini
role_attribute_path = "'Viewer'"
skip_org_role_sync = false

Сопоставление ролей организации

Поле org_mapping принимает список сопоставлений "<ExternalName>:<OrgIdOrName>:<Role>", разделённых пробелами или запятыми.

Можно заменить ExternalName или OrgIdOrName на * как «совпадает с любым».

Частичные совпадения рассматривают * как часть имени (например, *-org не совпадает с my-org)

Пример сопоставления ролей организации

В этом примере пользователю предоставлена роль Viewer в организации org_foo и роль Editor в организациях org_bar и org_baz.

Если бы пользователь был членом группы admin, ему была бы предоставлена роль администратора сервера Grafana.

Полезная нагрузка:

JSON
{
  "roles": ["org_foo", "org_bar", "another_org"]
}

Конфигурация:

ini
role_attribute_path = contains(roles[*], 'admin') && 'GrafanaAdmin' || 'None'
allow_assign_grafana_admin = true
org_attribute_path = roles
org_mapping = org_foo:org_foo:Viewer org_bar:org_bar:Editor *:org_baz:Editor

Настройка синхронизации команд

Note

Доступно в Grafana Enterprise и для клиентов на отдельных планах Grafana Cloud. Информацию о ценах см. на странице цены или свяжитесь с нашей командой продаж.

Используя синхронизацию команд, вы можете связать ваши группы OAuth2 с командами внутри Grafana. Это автоматически назначит пользователей соответствующим командам. Команды для каждого пользователя синхронизируются при входе пользователя в систему.

На группы Generic OAuth можно ссылаться по group ID, например 8bab1c86-8fba-33e5-2089-1d1c80ec267d или myteam. Информацию о группах можно извлечь из ID-токена OAuth2, информации о пользователе от конечной точки UserInfo или access-токена OAuth2. Информацию о настройке групп OAuth2 с Grafana с помощью параметра конфигурации groups_attribute_path см. в разделе параметры конфигурации.

Чтобы узнать больше о синхронизации команд, см. Настройка синхронизации команд.

Пример синхронизации команд

Конфигурация:

Bash
groups_attribute_path = groups

Полезная нагрузка:

JSON
{
    ...
    "groups": [
        "engineers",
        "analysts",
    ],
    ...
}

Параметры конфигурации

Следующая таблица описывает различные параметры конфигурации Generic OAuth. Вы можете применять эти параметры как переменные среды, как и любую другую конфигурацию в Grafana. Дополнительную информацию см. в разделе Переопределение конфигурации с помощью переменных среды.

Note

Если параметр конфигурации требует выражения JMESPath, которое содержит двоеточие, заключите всё выражение в кавычки, чтобы предотвратить ошибки разбора. Например role_attribute_path: "role:view"

Параметр Обязательно Поддерживается в Cloud Описание По умолчанию
enabled Нет Да Включает аутентификацию Generic OAuth. false
name Нет Да Имя, которое ссылается на аутентификацию Generic OAuth из пользовательского интерфейса Grafana. OAuth
icon Нет Да Значок, используемый для аутентификации Generic OAuth в пользовательском интерфейсе Grafana. signin
client_id Да Да Client ID, предоставленный вашим приложением OAuth2.
client_secret Да Да Client secret, предоставленный вашим приложением OAuth2.
auth_url Да Да Конечная точка авторизации вашего провайдера OAuth2.
token_url Да Да Конечная точка, используемая для получения access-токена OAuth2.
token_exchange_timeout Нет Да Тайм-аут в секундах для запроса обмена токена OAuth. Если установлено 0 или не задано, по умолчанию 15 секунд. 15
api_url Да Да Конечная точка, используемая для получения информации о пользователе, совместимой с OpenID UserInfo.
auth_style Нет Да Имя OAuth2 AuthStyle, которое будет использоваться при запросе ID-токена у провайдера OAuth2. Оно определяет, как client_id и client_secret отправляются провайдеру Oauth2. Доступные значения: AutoDetect, InParams и InHeader. AutoDetect
scopes Нет Да Список областей OAuth2, разделённых запятыми или пробелами. user:email
empty_scopes Нет Да Установите true, чтобы использовать пустую область во время аутентификации. false
allow_sign_up Нет Да Управляет созданием пользователей Grafana через вход Generic OAuth. Только существующие пользователи Grafana могут войти с Generic OAuth, если установлено false. true
auto_login Нет Да Установите true, чтобы позволить пользователям обойти экран входа и войти автоматически. Этот параметр игнорируется, если вы настроили несколько провайдеров аутентификации на использование автоматического входа. false
login_prompt Нет Да Указывает тип взаимодействия с пользователем при входе в IdP. Доступные значения: login, consent и select_account.
id_token_attribute_name Нет Да Имя ключа, используемого для извлечения ID-токена из возвращённого токена OAuth2. id_token
login_attribute_path Нет Да Выражение JMESPath, используемое для поиска логина пользователя из ID-токена пользователя. Дополнительную информацию о том, как извлекается логин пользователя, см. в разделе Настройка входа.
name_attribute_path Нет Да Выражение JMESPath, используемое для поиска имени пользователя из ID-токена пользователя. Это имя будет использоваться как отображаемое имя пользователя. Дополнительную информацию о том, как извлекается отображаемое имя пользователя, см. в разделе Настройка отображаемого имени.
email_attribute_path Нет Да Выражение JMESPath, используемое для поиска адреса электронной почты пользователя из информации о пользователе. Дополнительную информацию о том, как извлекается адрес электронной почты пользователя, см. в разделе Настройка адреса электронной почты.
email_attribute_name Нет Да Имя ключа, используемого для поиска адреса электронной почты пользователя внутри карты attributes ID-токена OAuth2. Дополнительную информацию о том, как извлекается адрес электронной почты пользователя, см. в разделе Настройка адреса электронной почты. email:primary
role_attribute_path Нет Да Выражение JMESPath, используемое для поиска роли Grafana. Grafana сначала вычислит выражение, используя ID-токен OAuth2. Если роль не найдена, выражение будет вычислено с использованием информации о пользователе, полученной от конечной точки UserInfo. Если роль всё ещё не найдена, выражение будет вычислено с использованием access-токена OAuth2. Результат вычисления должен быть допустимой ролью Grafana (None, Viewer, Editor, Admin или GrafanaAdmin). Дополнительную информацию о сопоставлении ролей пользователей см. в разделе Настройка сопоставления ролей.
role_attribute_strict Нет Да Установите true, чтобы запретить вход пользователя, если роль организации Grafana не может быть извлечена с помощью role_attribute_path или org_mapping. Дополнительную информацию о сопоставлении ролей пользователей см. в разделе Настройка сопоставления ролей. false
skip_org_role_sync Нет Да Установите true, чтобы прекратить автоматическую синхронизацию ролей пользователей. Это позволит вам вручную задавать роли организации для своих пользователей изнутри Grafana. false
org_attribute_path Нет Нет Выражение JMESPath, используемое для поиска роли организации Grafana. Grafana сначала вычислит выражение, используя ID-токен OAuth2. Если значение не возвращено, выражение будет вычислено с использованием информации о пользователе, полученной от конечной точки UserInfo. Если значение всё ещё не возвращено, выражение будет вычислено с использованием access-токена OAuth2. Результат вычисления будет сопоставлен с ролями организации на основе org_mapping. Дополнительную информацию о сопоставлении организации с ролью см. в разделе Пример сопоставления ролей организации.
org_mapping Нет Нет Список сопоставлений <ExternalOrgName>:<OrgIdOrName>:<Role>, разделённых запятыми или пробелами. Значение может быть *, что означает “Все пользователи”. Роль необязательна и может иметь следующие значения: None, Viewer, Editor или Admin. Дополнительную информацию о сопоставлении внешней организации с ролью см. в разделе Пример сопоставления ролей организации.
allow_assign_grafana_admin Нет Нет Установите true, чтобы включить автоматическую синхронизацию роли администратора сервера Grafana. Если этот параметр установлен в true и результат вычисления role_attribute_path для пользователя — GrafanaAdmin, Grafana предоставляет пользователю привилегии администратора сервера и роль администратора организации. Если этот параметр установлен в false и результат вычисления role_attribute_path для пользователя — GrafanaAdmin, Grafana предоставляет пользователю только роль администратора организации. Дополнительную информацию о сопоставлении ролей пользователей см. в разделе Настройка сопоставления ролей. false
groups_attribute_path Нет Да Выражение JMESPath, используемое для поиска группы пользователя. Grafana сначала вычислит выражение, используя ID-токен OAuth2. Если группы не найдены, выражение будет вычислено с использованием информации о пользователе, полученной от конечной точки UserInfo. Если группы всё ещё не найдены, выражение будет вычислено с использованием access-токена OAuth2. Результат вычисления должен быть строковым массивом групп.
allowed_groups Нет Да Список групп, разделённых запятыми или пробелами. Пользователь должен быть членом как минимум одной группы, чтобы войти. Если вы настроите allowed_groups, вы также должны настроить groups_attribute_path.
allowed_organizations Нет Да Список организаций, разделённых запятыми или пробелами. Пользователь должен быть членом как минимум одной организации, чтобы войти.
allowed_domains Нет Да Список доменов, разделённых запятыми или пробелами. Пользователь должен принадлежать как минимум к одному домену, чтобы войти.
team_ids Нет Да Строковый список ID команд. Если задан, пользователь должен быть членом одной из указанных команд, чтобы войти. Если вы настроите team_ids, вы также должны настроить teams_url и team_ids_attribute_path.
team_ids_attribute_path Нет Да Выражение JMESPath, используемое для поиска ID команды Grafana внутри результатов, возвращаемых конечной точкой teams_url.
teams_url Нет Да URL, используемый для запроса ID команд. Если не задан, значение по умолчанию — /teams. Если вы настроите teams_url, вы также должны настроить team_ids_attribute_path.
tls_skip_verify_insecure Нет Нет Если установлено true, клиент принимает любой сертификат, представленный сервером, и любое имя хоста в этом сертификате. Используйте это только для тестирования, поскольку этот режим делает SSL/TLS уязвимым для атак типа “человек посередине”. false
tls_client_cert Нет Нет Путь к сертификату.
tls_client_key Нет Нет Путь к ключу.
tls_client_ca Нет Нет Путь к списку доверенных центров сертификации.
use_pkce Нет Да Установите true, чтобы использовать Proof Key for Code Exchange (PKCE). Grafana использует метод запроса S256 на основе SHA256 и верификатор кода размером 128 байт (в кодировке base64url). false
use_refresh_token Нет Да Установите true, чтобы использовать refresh-токен и проверять истечение access-токена. false
validate_id_token Нет Да Установите true, чтобы включить валидацию подписи JWT для ID-токенов. Когда включено, jwk_set_url должен быть настроен. false
jwk_set_url Нет Да URL конечной точки JSON Web Key Set (JWKS), используемой для проверки подписей ID-токенов JWT. Требуется, когда validate_id_token установлен в true.
signout_redirect_url Нет Да URL для перенаправления после выхода пользователя из системы.

Примеры настройки Generic OAuth

В этом разделе приведены примеры настройки интеграции Generic OAuth.

Настройка OAuth2 с Descope

Чтобы настроить аутентификацию Generic OAuth с Descope, выполните следующие шаги:

  1. Создайте проект Descope здесь и пройдите мастер начала работы, чтобы настроить свою аутентификацию. Вы можете пропустить этот шаг, если у вас уже настроен проект Descope.

  2. Если вы хотите использовать поток, отличный от Sign Up or In, перейдите в меню IdP Applications в консоли и выберите своё приложение IdP. Затем измените параметр запроса Flow Hosting URL ?flow=sign-up-or-in, чтобы изменить id потока, который хотите использовать.

  3. Нажмите Save.

  4. Обновите раздел [auth.generic_oauth] файла конфигурации Grafana, используя значения со вкладки Settings:

    Note

    Вы можете получить свой Client ID (Descope Project ID) в разделе Project Settings. Ваш Client Secret (Descope Access Key) можно сгенерировать в разделе Access Keys.

    Bash
    [auth.generic_oauth]
    enabled = true
    allow_sign_up = true
    auto_login = false
    team_ids =
    allowed_organizations =
    name = Descope
    client_id = <Descope Project ID>
    client_secret = <Descope Access Key>
    scopes = openid profile email descope.claims descope.custom_claims
    auth_url = https://api.descope.com/oauth2/v1/authorize
    token_url = https://api.descope.com/oauth2/v1/token
    api_url = https://api.descope.com/oauth2/v1/userinfo
    use_pkce = true
    use_refresh_token = true

Настройка OAuth2 с Auth0

Note

Поддержка функции “audience” Auth0 в настоящее время недоступна в Grafana. Для ролей и разрешений доступные варианты описаны здесь.

Чтобы настроить аутентификацию Generic OAuth с Auth0, выполните следующие шаги:

  1. Создайте приложение Auth0 со следующими параметрами:

    • Name: Grafana
    • Type: Regular Web Application
  2. Перейдите на вкладку Settings приложения и установите Allowed Callback URLs в https://<grafana domain>/login/generic_oauth.

  3. Нажмите Save Changes.

  4. Обновите раздел [auth.generic_oauth] файла конфигурации Grafana, используя значения со вкладки Settings:

    Bash
    [auth.generic_oauth]
    enabled = true
    allow_sign_up = true
    auto_login = false
    team_ids =
    allowed_organizations =
    name = Auth0
    client_id = <client id>
    client_secret = <client secret>
    scopes = openid profile email offline_access
    auth_url = https://<domain>/authorize
    token_url = https://<domain>/oauth/token
    api_url = https://<domain>/userinfo
    use_pkce = true
    use_refresh_token = true

Настройка OAuth2 с Bitbucket

Чтобы настроить аутентификацию Generic OAuth с Bitbucket, выполните следующие шаги:

  1. Перейдите в Settings > Workspace setting > OAuth consumers в BitBucket.

  2. Создайте приложение, выбрав Add consumer и используя следующие параметры:

    • Allowed Callback URLs: https://<grafana domain>/login/generic_oauth
  3. Нажмите Save.

  4. Обновите раздел [auth.generic_oauth] файла конфигурации Grafana, используя значения Key и Secret из описания consumer:

    Bash
    [auth.generic_oauth]
    name = BitBucket
    enabled = true
    allow_sign_up = true
    auto_login = false
    client_id = <client key>
    client_secret = <client secret>
    scopes = account email
    auth_url = https://bitbucket.org/site/oauth2/authorize
    token_url = https://bitbucket.org/site/oauth2/access_token
    api_url = https://api.bitbucket.org/2.0/user
    teams_url = https://api.bitbucket.org/2.0/user/permissions/workspaces
    team_ids_attribute_path = values[*].workspace.slug
    team_ids =
    allowed_organizations =
    use_refresh_token = true

По умолчанию refresh-токен включается в ответ для Authorization Code Grant.

Настройка OAuth2 с OneLogin

Чтобы настроить аутентификацию Generic OAuth с OneLogin, выполните следующие шаги:

  1. Создайте новый Custom Connector в OneLogin со следующими настройками:

    • Name: Grafana
    • Sign On Method: OpenID Connect
    • Redirect URI: https://<grafana domain>/login/generic_oauth
    • Signing Algorithm: RS256
    • Login URL: https://<grafana domain>/login/generic_oauth
  2. Добавьте приложение в Connector Grafana:

    • Display Name: Grafana
  3. Обновите раздел [auth.generic_oauth] файла конфигурации Grafana, используя client ID и client secret со вкладки SSO страницы сведений о приложении:

    Ваш домен OneLogin будет совпадать с URL, который вы используете для доступа к OneLogin.

    Bash
    [auth.generic_oauth]
    name = OneLogin
    enabled = true
    allow_sign_up = true
    auto_login = false
    client_id = <client id>
    client_secret = <client secret>
    scopes = openid email name
    auth_url = https://<onelogin domain>.onelogin.com/oidc/2/auth
    token_url = https://<onelogin domain>.onelogin.com/oidc/2/token
    api_url = https://<onelogin domain>.onelogin.com/oidc/2/me
    team_ids =
    allowed_organizations =

Настройка OAuth2 с Dex

Чтобы настроить аутентификацию Generic OAuth с Dex IdP, выполните следующие шаги:

  1. Добавьте Grafana как клиента в YAML-файл конфигурации Dex:

    YAML
    staticClients:
      - id: <client id>
        name: Grafana
        secret: <client secret>
        redirectURIs:
          - 'https://<grafana domain>/login/generic_oauth'

    Note

    В отличие от многих других провайдеров OAuth2, Dex не предоставляет <client secret>. Вместо этого секрет можно сгенерировать, например, с помощью openssl rand -hex 20.

  2. Обновите раздел [auth.generic_oauth] конфигурации Grafana:

    Bash
    [auth.generic_oauth]
    name = Dex
    enabled = true
    client_id = <client id>
    client_secret = <client secret>
    scopes = openid email profile groups offline_access
    auth_url = https://<dex base uri>/auth
    token_url = https://<dex base uri>/token
    api_url = https://<dex base uri>/userinfo

    <dex base uri> соответствует конфигурации issuer: в Dex (например, домен Dex, возможно, включающий путь, такой как /dex). Область offline_access необходима при использовании refresh-токенов.