identity/oidc/config
В данном разделе представлена документация API для настройки, получения и проверки токенов идентификации, выданных StarVault.
1. Настройка бекенда токенов идентификации
Эта конечная точка обновляет настройки для токенов идентификации, соответствующих OIDC, выданных StarVault.
| Метод | Путь |
|---|---|
|
|
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.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request GET \
http://127.0.0.1:8200/v1/identity/oidc/config
{
"data": {
"issuer": "https://example.com:1234"
}
}
3. Создание именованного ключа
Эта конечная точка создает или обновляет именованный ключ, который используется ролью для подписи токенов.
| Метод | Путь |
|---|---|
|
|
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. Чтение именованного ключа
Эта конечная точка запрашивает именованный ключ и возвращает его конфигурацию.
| Метод | Путь |
|---|---|
|
|
6. Список именованных ключей
Эта конечная точка возвращает список всех именованных ключей.
| Метод | Путь |
|---|---|
|
|
$ 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. Ротация именованного ключа
Эта конечная точка ротуирует именованный ключ.
| Метод | Путь |
|---|---|
|
|
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 токены генерируются по роли и подписываются на именованный ключ.
| Метод | Путь |
|---|---|
|
|
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. Чтение роли
Эта конечная точка запрашивает роль и возвращает ее конфигурацию.
| Метод | Путь |
|---|---|
|
|
11. Список ролей
Эта конечная точка возвращает список всех ролей.
| Метод | Путь |
|---|---|
|
|
$ 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) токена.
| Метод | Путь |
|---|---|
|
|
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 токена.
| Метод | Путь |
|---|---|
|
|
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 провайдера.
| Метод | Путь |
|---|---|
|
|
$ 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"
}
]
}