Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

identity/oidc/config

В данном разделе представлена документация API для настройки, получения и проверки токенов идентификации, выданных StarVault.

1. Настройка бекенда токенов идентификации

Эта конечная точка обновляет настройки для токенов идентификации, соответствующих OIDC, выданных StarVault.

Метод Путь

POST

identity/oidc/config

1.1. Параметры

  • issuer (string: "") - URL издателя, который будет использоваться в утверждении iss токена. Если не установлен, будет использован api_addr StarVault. Издатель является чувствительным к регистру URL, использующим схему https, которая содержит схему, хост и опциональный номер порта.

Пример тела запроса:
{
  "issuer": "https://example.com:1234"
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/identity/oidc/config
Пример ответа:
{
  "data": null,
  "warnings": [
    "If \"issuer\" is set explicitly, all tokens must be validated against that address, including those issued by secondary clusters. Setting issuer to \"\" will restore the default behavior of using the cluster's api_addr as the issuer."
  ]
}

2. Чтение конфигураций для бекенда токенов идентификации

Эта конечная точка запрашивает конфигурации токенов идентификации StarVault.

Метод Путь

GET

identity/oidc/config

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request GET \
    http://127.0.0.1:8200/v1/identity/oidc/config
Пример ответа:
{
  "data": {
    "issuer": "https://example.com:1234"
  }
}

3. Создание именованного ключа

Эта конечная точка создает или обновляет именованный ключ, который используется ролью для подписи токенов.

Метод Путь

POST

identity/oidc/key/:name

3.1. Параметры

  • name (string) - имя именованного ключа.

  • rotation_period (int or time string: "24h") - как часто генерировать новый ключ подписи. Использует строки формата длительности.

  • verification_ttl (int or time string: "24h") - определяет, как долго открытая часть ключа подписи будет доступна для проверки после его ротации. Использует строки формата длительности.

  • allowed_client_ids (list: []) - массив идентификаторов клиентов ролей, которым разрешено использовать этот ключ для подписи. Если пусто, роли не разрешены. Если "*", всем ролям разрешено.

  • algorithm (string: "RS256") - алгоритм подписи, который следует использовать. Разрешенные значения: RS256 (по умолчанию), RS384, RS512, ES256, ES384, ES512, EdDSA.

Пример тела запроса:
{
  "rotation_period": "12h",
  "verification_ttl": 43200
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/identity/oidc/key/named-key-001

4. Чтение именованного ключа

Эта конечная точка запрашивает именованный ключ и возвращает его конфигурацию.

Метод Путь

GET

identity/oidc/key/:name

4.1. Параметры

  • name (string) - Имя ключа.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request GET \
    http://127.0.0.1:8200/v1/identity/oidc/key/named-key-001
Пример ответа:
{
  "data": {
    "algorithm": "RS256",
    "rotation_period": 43200,
    "verification_ttl": 43200
  }
}

5. Удаление именованного ключа

Эта конечная точка удаляет именованный ключ.

Метод Путь

DELETE

identity/oidc/key/:name

5.1. Параметры

  • name (string) - имя ключа.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/identity/oidc/key/named-key-001

6. Список именованных ключей

Эта конечная точка возвращает список всех именованных ключей.

Метод Путь

LIST

identity/oidc/key

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request LIST \
    http://127.0.0.1:8200/v1/identity/oidc/key
Пример ответа:
{
  "data": {
    "keys": ["named-key-001", "named-key-002"]
  }
}

7. Ротация именованного ключа

Эта конечная точка ротуирует именованный ключ.

Метод Путь

POST

identity/oidc/key/:name/rotate

7.1. Параметры

  • name (string) - имя ключа, который будет ротиурован.

  • verification_ttl (string: <необязательно>) - определяет, как долго открытая часть ключа будет доступна для проверки после ротации. Установка verification_ttl здесь переопределит verification_ttl, установленный на ключе.

Пример тела запроса:
{
  "verification_ttl": 0
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/identity/oidc/key/named-key-001/rotate

8. Создание или обновление роли

Создает или обновляет роль. ID токены генерируются по роли и подписываются на именованный ключ.

Метод Путь

POST

identity/oidc/role/:name

8.1. Параметры

  • name (string) - имя роли.

  • key (string) - настроенный именованный ключ, ключ должен уже существовать.

  • template (string: <необязательно>) - шаблонная строка, используемая для генерации токенов. Это может быть строка в формате JSON или base64.

  • client_id (string: <необязательно>) - необязательный идентификатор клиента. Если не установлен, будет сгенерирован случайный ID.

  • ttl (int or time string: "24h") - TTL токенов, генерируемых по роли. Использует строки формата длительности.

Пример тела запроса:
{
  "key": "named-key-001",
  "ttl": "12h"
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/identity/oidc/role/role-001

9. Чтение роли

Эта конечная точка запрашивает роль и возвращает ее конфигурацию.

Метод Путь

GET

identity/oidc/role/:name

9.1. Параметры

  • name (string) - имя роли.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request GET \
    http://127.0.0.1:8200/v1/identity/oidc/role/role-001
Пример ответа:
{
  "data": {
    "client_id": "PGE8tf4RmJkDwvjI1FgARkXEmH",
    "key": "named-key-001",
    "template": "",
    "ttl": 43200
  }
}

10. Удаление роли

Эта конечная точка удаляет роль.

Метод Путь

DELETE

identity/oidc/role/:name

10.1. Параметры

  • name (string) - имя роли.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/identity/oidc/role/role-001

11. Список ролей

Эта конечная точка возвращает список всех ролей.

Метод Путь

LIST

identity/oidc/role

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request LIST \
    http://127.0.0.1:8200/v1/identity/oidc/role
Пример ответа:
{
  "data": {
    "keys": ["role-001", "role-002", "testrole"]
  }
}

12. Генерация подписанного ID токена

Используйте этот конечный пункт для генерации подписанного ID (OIDC) токена.

Метод Путь

GET

identity/oidc/token/:name

12.1. Параметры

  • name (string: "") - имя роли, для которой нужно сгенерировать подписанный ID токен.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request GET \
    --data @payload.json \
    http://127.0.0.1:8200/v1/identity/oidc/token/role-001
Пример ответа:
{
  "data": {
    "client_id": "P6CfCzyHsQY4pMcA6kWAOCItA7",
    "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjJkMGI4YjlkLWYwNGQtNzFlYy1iNjc0LWM3MzU4NDMyYmM1YiJ9.eyJhdWQiOiJQNkNmQ3p5SHNRWTRwTWNBNmtXQU9DSXRBNyIsImV4cCI6MTU2MTQ4ODQxMiwiaWF0IjoxNTYxNDAyMDEyLCJpc3MiOiJodHRwczovL2V4YW1wbGUuY29tOjEyMzQiLCJzdWIiOiI2YzY1ZWFmNy1kNGY0LTEzMzMtMDJiYy0xYzc1MjE5YzMxMDIifQ.IcbWTmks7P5eVtwmIBl5rL1B88MI55a9JJuYVLIlwE9aP_ilXpX5fE38CDm5PixDDVJb8TI2Q_FO4GMMH0ymHDO25ZvA917WcyHCSBGaQlgcS-WUL2fYTqFjSh-pezszaYBgPuGvH7hJjlTZO6g0LPCyUWat3zcRIjIQdXZum-OyhWAelQlveEL8sOG_ldyZ8v7fy7GXDxfJOK1kpw5AX9DXJKylbwZTBS8tLb-7edq8uZ0lNQyWy9VPEW_EEIZvGWy0AHua-Loa2l59GRRP8mPxuMYxH_c88x1lsSw0vH9E3rU8AXLyF3n4d40PASXEjZ-7dnIf4w4hf2P4L0xs_g",
    "ttl": 86400
  }
}

13. Интроспекция подписанного ID токена

Эта конечная точка может проверить подлинность и активное состояние подписанного ID токена.

Метод Путь

POST

identity/oidc/introspect

13.1. Параметры

  • token (string) - подписанный ID токен, соответствующий OIDC.

  • client_id (string: <необязательно>) - указание идентификатора клиента дополнительно требует, чтобы токен содержал совпадающее утверждение aud.

Пример тела запроса:
{
  "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImE4NDQ4YmVkLTk4ZTMtMDNhMC01ODY4LTdmOWYyZDc5NWY2NSJ9.eyJhdWQiOiJpUDdyV1A4dmhDVFFpOTAydGhaR0hUazJMbyIsImV4cCI6MTU2MTQ4OTE0OSwiaWF0IjoxNTYxNDAyNzQ5LCJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjgyMDAvdjEvaWRlbnRpdHkvb2lkYyIsInN1YiI6IjQ1NDQxZTg3LWMyMWQtYzY5NS0wNGM3LWU0YmU4MGU1M2Y0ZiJ9.IYZx1bBofBgwphLZggugFUE7V3ZLFDNr0UYv3hhc4RlIu5WgFZPRjpKVXPdORozYJJB_37aJW6qm5j8nNSz4WrWUmMcrVxoZi2VBExu-GcHHniEPRryR9t_45rqP2MycLBz0dICOjFDWvfkp6ddyCsQfkRnplPGCaN67MUEdgYQf5QNyxaG-yabRPiATY_OtXSjiNsMhJe6ZloYTZZc9gTTfKcKQf4mfy5yRY6471qkqeTuYNhKjwdkEnCSaEjHmCdZOYC5DAet16eQ7ankcwBno17_zs7vbPmkXNttALOrjSQgGe1td1SCfZeg5UOs7_IPk0qqdwOdyQ8wsrDmSyg"
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/identity/oidc/introspect
Пример ответа:
{
  "active": true
}

14. Чтение .well-known конфигураций

Запросите этот путь, чтобы получить набор утверждений о конфигурации токенов идентификации. Ответ представляет собой соответствующий Response конфигурации OpenID провайдера.

Метод Путь

GET

identity/oidc/.well-known/openid-configuration

Пример запроса:
$ curl \
    --request GET \
    http://127.0.0.1:8200/v1/identity/oidc/.well-known/openid-configuration
Пример ответа:
{
  "issuer": "https://example.com:1234",
  "authorization_endpoint": "",
  "token_endpoint": "",
  "jwks_uri": "https://example.com:1234/.well-known/keys",
  "response_types_supported": ["id_token"],
  "subject_types_supported": ["public"],
  "id_token_signing_alg_values_supported": ["RS256","RS384","RS512","ES256","ES384","ES512","EdDSA"],
  "scopes_supported": null,
  "token_endpoint_auth_methods_supported": null,
  "claims_supported": null
}

15. Чтение активных открытых ключей

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

Пример запроса:
$ curl \
    --request GET \
    http://127.0.0.1:8200/v1/identity/oidc/.well-known/keys
Пример ответа:
{
  "keys": [
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "94178020-55b5-e18d-b32b-1010ba5a35b4",
      "alg": "RS256",
      "n": "1bt-V8T7g0zr7koNbdppFrUM5YrnybPDOt-cK3MKmL1FcN3aOltCw9tCYStHgm8mIz_DJ1HgIjA-DcK_O9gacEGFCidUuudV8O4TixToHEVyRe1yXu-Q98hwkm9JtFF9PvMzDXhn4s3bLanOZzO15JAdVCo0JnwSIT9Ay3LxPLbWHYbPj7ROScuvic99OyvWz87qBK-AoXmxo9lRNY39LtieMr1D2iq0HvtjHkfiarr34CSTcuksknOsY49BU5ktrs_YJSEVpeRQ8RywY1sWrq8w_UmGsNFfPr--crXQw0ekJCXzmotsRHE5jwMuhjuucVlnyQFBYEdfDB_iPbC7Hw",
      "e": "AQAB"
    }
  ]
}