API настроек SSO

Note

Starting in Grafana 13, /api endpoints are being deprecated in favor of the /apis route. Note that while Grafana is working on migrating existing APIs, currently there may not be an exact match to the legacy API you’re using.

This change doesn’t disrupt or break your current setup. Legacy APIs are not being disabled and remain fully accessible and operative, but /api routes will no longer be updated.

To learn more refer to the new API structure in Grafana.

Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей.

Этот API можно использовать для создания, обновления, удаления, получения и перечисления настроек SSO для OAuth2 и SAML.

Настройки, управляемые этим API, хранятся в базе данных и переопределяют настройки из других источников (аргументы, переменные среды, файл настроек и т. д.). Поэтому каждый раз, когда настройки конкретного провайдера удаляются или сбрасываются к значениям по умолчанию во время выполнения, настройки наследуются из других источников в обратном порядке приоритета (аргументы > переменные среды > файл настроек).

Получение списка настроек SSO

GET /api/v1/sso-settings

Возвращает список настроек SSO для всех провайдеров.

Провайдеры или ключи SSO, не управляемые этим API, берутся из других источников (файл настроек, переменные среды, значения по умолчанию).

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
settings:read settings:auth.{provider}:*

Пример запроса:

http
GET /api/v1/sso-settings HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json
[
  {
    "id":        "1",
    "provider":  "github",
    "settings": {
      "apiUrl": "https://api.github.com/user",
      "clientId": "my_github_client",
      "clientSecret": "*********",
      "enabled": true,
      "scopes": "user:email,read:org"
      // rest of the settings
    },
    "source":    "system",
  },
  {
    "id":        "2",
    "provider":  "azuread",
    "settings": {
      "authUrl": "https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/oauth2/v2.0/authorize",
      "clientId": "my_azuread_client",
      "clientSecret": "*********",
      "enabled": true,
      "scopes": "openid,email,profile"
      // rest of the settings
    },
    "source":    "system",
  }
]

Коды состояния:

  • 200 – Настройки SSO найдены
  • 400 – Некорректный запрос
  • 401 – Не авторизован
  • 403 – Доступ запрещён

Получение настроек SSO

GET /api/v1/sso-settings/:provider

Возвращает настройки SSO для провайдера.

Ключи SSO, не управляемые этим API, берутся из других источников (файл настроек, переменные среды, значения по умолчанию).

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
settings:read settings:auth.{provider}:*

Пример запроса:

http
GET /api/v1/sso-settings/github HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

Пример ответа:

http
HTTP/1.1 200
Content-Type: application/json
ETag: db87f729761898ee
{
  "id":        "1",
  "provider":  "github",
  "settings": {
    "apiUrl": "https://api.github.com/user",
    "clientId": "my_github_client",
    "clientSecret": "*********",
    "enabled": true,
    "scopes": "user:email,read:org"
    // rest of the settings
  },
  "source":    "system",
}

Коды состояния:

  • 200 – Настройки SSO найдены
  • 400 – Некорректный запрос
  • 401 – Не авторизован
  • 403 – Доступ запрещён
  • 404 – Настройки SSO не найдены

Обновление настроек SSO

PUT /api/v1/sso-settings/:provider

Обновляет настройки SSO для провайдера.

Когда вы отправляете новые настройки провайдера через API, Grafana проверяет, допустимы ли и корректны ли заданные настройки. Если да, Grafana сохраняет настройки в базе данных и перезагружает сервисы Grafana без необходимости перезапускать экземпляр.

Note

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

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
settings:write settings:auth.{provider}:*

Пример запроса:

http
PUT /api/v1/sso-settings/github HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "settings": {
    "apiUrl": "https://api.github.com/user",
    "clientId": "my_github_client",
    "clientSecret": "my_github_secret",
    "enabled": true,
    "scopes": "user:email,read:org"
  }
}

Пример ответа:

http
HTTP/1.1 204
Content-Type: application/json

Коды состояния:

  • 204 – Настройки SSO обновлены
  • 400 – Некорректный запрос
  • 401 – Не авторизован
  • 403 – Доступ запрещён

Удаление настроек SSO

DELETE /api/v1/sso-settings/:provider

Удаляет существующую запись настроек SSO для провайдера.

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
settings:write settings:auth.{provider}:*

Пример запроса:

http
DELETE /api/v1/sso-settings/azuread HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

Пример ответа:

http
HTTP/1.1 204
Content-Type: application/json

Коды состояния:

  • 204 – Настройки SSO удалены
  • 400 – Некорректный запрос
  • 401 – Не авторизован
  • 403 – Доступ запрещён
  • 404 – Настройки SSO не найдены