/identity/oidc
В данном разделе представлена документация API для настройки и управления провайдерами OIDC в StarVault.
1. Создание или обновление провайдера
Эта конечная точка создает или обновляет провайдера.
| Метод | Путь |
|---|---|
|
|
1.1. Параметры
-
name(string: <обязательно>)- имя провайдера. Этот параметр указывается как часть URL. -
issuer(string: <необязательно>)- указывает, что будет использоваться в компонентеscheme://host:portдля утвержденияissID токенов. По умолчанию используется URL сapi_addrStarVault в качестве компонентаscheme://host:portи/v1/identity/oidc/provider/:nameв качестве компонента пути. Если предоставлено явно, оно должно указывать на экземпляр StarVault, который доступен по сети клиентам для валидации ID токена. -
allowed_client_ids([]string: <необязательно>)- идентификаторы клиентов, которым разрешено использовать провайдер. Если пусто, клиенты не допускаются. Если указано"*", разрешены все клиенты. -
scopes_supported([]string: <необязательно>)- области, доступные для запроса у провайдера.
{
"allowed_client_ids": ["*"],
"scopes_supported": ["test-scope"]
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider
2. Чтение провайдера по имени
Эта конечная точка запрашивает OIDC провайдера по его имени.
| Метод | Путь |
|---|---|
|
|
2.1. Параметры
-
name(string: <обязательно>)- имя провайдера.
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider
{
"data": {
"allowed_client_ids": ["*"],
"issuer": "https://127.0.0.1:8200/v1/identity/oidc/provider/test-provider",
"scopes_supported": ["test-scope"]
}
}
3. Список провайдеров
Эта конечная точка возвращает список всех OIDC провайдеров.
| Метод | Путь |
|---|---|
|
|
3.1. Параметры запроса
-
allowed_client_id(string: <необязательно>)- фильтрует список OIDC провайдеров относительно тех, которые разрешают данный идентификатор клиента в своем наборе allowed_client_ids.
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
http://127.0.0.1:8200/v1/identity/oidc/provider
{
"data": {
"key_info": {
"default": {
"allowed_client_ids": ["*"],
"issuer": "https://127.0.0.1:8200/v1/identity/oidc/provider/default",
"scopes_supported": []
}
},
"keys": [
"default"
]
}
}
5. Создание или обновление области
Эта конечная точка создает или обновляет область.
| Метод | Путь |
|---|---|
|
|
5.1. Параметры
-
name(string: <обязательно>)- имя области. Этот параметр указывается как часть URL. Имя областиopenidзарезервировано. -
template(string: <необязательно>)- строка шаблона JSON для области. Может быть предоставлена как JSON в формате base64. -
description(string: <необязательно>)- описание области.
{
"template": "{ \"groups\": {{identity.entity.groups.names}} }",
"description": "A simple scope example."
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/identity/oidc/scope/test-scope
6. Чтение области по имени
Эта конечная точка запрашивает область по ее имени.
| Метод | Путь |
|---|---|
|
|
6.1. Параметры
-
name(string: <обязательно>)- имя области.
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/identity/oidc/scope/test-scope
{
"data": {
"description": "A simple scope example.",
"template": "{ \"groups\": {{identity.entity.groups.names}} }"
}
}
7. Список областей
Эта конечная точка возвращает список всех настроенных областей.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
http://127.0.0.1:8200/v1/identity/oidc/scope
{
"data": {
"keys": [
"test-scope"
]
}
}
9. Создание или обновление клиента
Эта конечная точка создает или обновляет клиента.
| Метод | Путь |
|---|---|
|
|
9.1. Параметры
-
name(string: <обязательно>)- имя клиента. Этот параметр указывается как часть URL. -
key(string: "default")- ссылка на ресурс именованного ключа. Этот ключ будет использоваться для подписи ID токенов для клиента. Это нельзя изменить после создания. Если не указано, по умолчанию используется встроенный ключ по умолчанию. -
redirect_uris([]string: <необязательно>)- значения URI редиректа, используемые клиентом. Один из этих значений должен точно совпадать с параметромredirect_uri, использованным в каждом запросе аутентификации. -
assignments([]string: <необязательно>)- список ресурсов назначений, связанных с клиентом. Назначения клиента ограничивают StarVault сущности и группы, которым разрешено аутентифицироваться через клиента. По умолчанию ни одной сущности StarVault не разрешено. Чтобы разрешить всем сущностям StarVault аутентифицироваться через клиента, предоставьте встроенное назначение allow_all. -
client_type(string: "confidential")- тип клиента, основанный на его способности поддерживать конфиденциальность учетных данных. Это нельзя изменить после создания. Ниже представлен список различий между конфиденциальными и открытыми клиентами в StarVault:-
confidential-
Способен поддерживать конфиденциальность своих учетных данных
-
Имеет секрет клиента
-
Использует метод аутентификации клиента
client_secret_basicилиclient_secret_post -
Может использовать Proof Key for Code Exchange (PKCE) для потока кода аутентификации
-
-
public-
Неспособен поддерживать конфиденциальность своих учетных данных
-
Не имеет секрета клиента
-
Использует метод аутентификации клиента
none -
Должен использовать Proof Key for Code Exchange (PKCE) для потока кода аутентификации
-
-
-
id_token_ttl(int or duration: "24h")- время жизни для ID токенов, получаемых клиентом. Принимает строки формата длительности. Значение должно быть меньшеverification_ttlна ключе. -
access_token_ttl(int or duration: "24h")- время жизни для токенов доступа, получаемых клиентом. Принимает строки формата длительности. -
session_ttl(int or duration: "24h" <необязательно>)- TTL OIDC-сессии и refresh token. Должен быть >=access_token_ttl. -
post_logout_redirect_uris([]string: <необязательно>)- URI, на которые RP может перенаправить пользователя после logout. -
backchannel_logout_uri(string: <необязательно>)- URI для OIDC Back-Channel Logout (POST сlogout_token). -
backchannel_logout_session_required(bool: false)- требовать claimsidв logout token.
|
При нарушении условия |
{
"key": "test-key",
"access_token_ttl": "5m",
"session_ttl": "1h",
"id_token_ttl": "30m",
"post_logout_redirect_uris": ["http://localhost:8080/logged-out"],
"backchannel_logout_uri": "https://app.example.com/backchannel-logout",
"backchannel_logout_session_required": true
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/identity/oidc/client/test-client
10. Чтение клиента по имени
Эта конечная точка запрашивает клиента по его имени.
| Метод | Путь |
|---|---|
|
|
10.1. Параметры
-
name(string: <обязательно>)- имя клиента.
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/identity/oidc/client/test-client
{
"data": {
"access_token_ttl": 1800,
"assignments": [],
"client_id": "014zXvcvbvIZWwD5NfD1Uzmv7c5JBRMb",
"client_secret": "hvo_secret_bZtgQPBZaJXK7F5vOI7JlvEuLOfOUS7DmwynFjE3xKcsen7TyowqPFfYFXG2tbWM",
"client_type": "confidential",
"id_token_ttl": 3600,
"key": "test-key",
"redirect_uris": [],
"session_ttl": 3600,
"post_logout_redirect_uris": ["http://localhost:8080/logged-out"],
"backchannel_logout_uri": "https://app.example.com/backchannel-logout",
"backchannel_logout_session_required": true
}
}
11. Список клиентов
Эта конечная точка возвращает список всех настроенных клиентов.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
http://127.0.0.1:8200/v1/identity/oidc/client
{
"data": {
"key_info": {
"my-app": {
"access_token_ttl": 86400,
"assignments": [
"allow_all"
],
"client_id": "wGr981oYLJbcr4zrUriYxjxSc80JL7HW",
"client_type": "confidential",
"id_token_ttl": 86400,
"key": "default",
"redirect_uris": [
"http://localhost:5555/callback"
],
"session_ttl": 3600,
"post_logout_redirect_uris": ["http://localhost:8080/logged-out"],
"backchannel_logout_uri": "",
"backchannel_logout_session_required": false
}
},
"keys": [
"my-app"
]
}
}
13. Создание или обновление назначения
Эта конечная точка создает или обновляет назначение.
| Метод | Путь |
|---|---|
|
|
13.1. Параметры
{
"group_ids": ["262ca5b9-7b69-0a84-446a-303dc7d778af"],
"entity_ids": ["b6094ac6-baf4-6520-b05a-2bd9f07c66da"]
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/identity/oidc/assignment/test-assignment
14. Чтение назначения по имени
Эта конечная точка запрашивает назначение по его имени.
| Метод | Путь |
|---|---|
|
|
14.1. Параметры
-
name(string: <обязательно>)- имя назначения.
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/identity/oidc/assignment/test-assignment
{
"data": {
"entity_ids": [
"b6094ac6-baf4-6520-b05a-2bd9f07c66da"
],
"group_ids": [
"262ca5b9-7b69-0a84-446a-303dc7d778af"
]
}
}
15. Список назначений
Эта конечная точка возвращает список всех настроенных назначений.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
http://127.0.0.1:8200/v1/identity/oidc/assignment
{
"data": {
"keys": [
"test-assignment"
]
}
}
17. Чтение конфигурации OpenID провайдера
Возвращает метаданные OpenID Connect для именованного OIDC провайдера. Ответ является соответствующим Response конфигурации OpenID провайдера.
| Метод | Путь |
|---|---|
|
|
17.1. Параметры
-
name(string: <обязательно>)- имя провайдера. Этот параметр указывается как часть URL.
$ curl \
--request GET \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/.well-known/openid-configuration
{
"issuer": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider",
"jwks_uri": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/.well-known/keys",
"authorization_endpoint": "http://127.0.0.1:8200/ui/identity/oidc/provider/test-provider/authorize",
"token_endpoint": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/token",
"userinfo_endpoint": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/userinfo",
"end_session_endpoint": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/logout",
"introspection_endpoint": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/introspect",
"introspection_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post"
],
"backchannel_logout_supported": true,
"backchannel_logout_session_supported": true,
"request_parameter_supported": false,
"request_uri_parameter_supported": false,
"id_token_signing_alg_values_supported": [
"RS256",
"RS384",
"RS512",
"ES256",
"ES384",
"ES512",
"EdDSA"
],
"response_types_supported": [
"code"
],
"scopes_supported": [
"openid"
],
"subject_types_supported": [
"public"
],
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post",
"none"
]
}
18. Чтение открытых ключей провайдера
Запросите этот путь, чтобы получить открытую часть ключей для OIDC провайдера. Клиенты могут использовать их для проверки подлинности токена идентификации.
| Метод | Путь |
|---|---|
|
|
18.1. Параметры
-
name(string: <обязательно>)- имя провайдера. Этот параметр указывается как часть URL.
$ curl \
--request GET \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/.well-known/keys
{
"keys": [
{
"use": "sig",
"kty": "RSA",
"kid": "ee7c0920-fdb9-5c1a-9c69-6dab710d1a09",
"alg": "RS256",
"n": "zdFjUV9lBw5nQPvTtwH-gzKgRG7iepvYbFoc2hNB0-inJL25oh-mvNW3GS8jPY5XHLsiWa_1TKKE99JrKQgane2C96soFeOvR7SozbCeH8_FpZelH1Pym1NV038j05Vp87uB9FeKPsy1PNOLPTs_Fp42JIAenly7ojYwPp1s61p9V0U9rOhtldY7GkXHLN9s8v3aJjxqrTS3Puhs9MFS7EgRrEDAc69uiLXCoYXKygjXddvJi6j446XxnO2eTRMGl1f2t04s_vDgVnFQgjQSKYWPbOMhf2slkeR47fqE3qqUDzINxauqMbkW-PlLP9IN0crR2uC07cG2os4RxN4YHw",
"e": "AQAB"
},
{
"use": "sig",
"kty": "RSA",
"kid": "6e468221-b7c2-9d2d-744d-33b7ae0357cb",
"alg": "RS256",
"n": "rMaucILJKiFg_lkCE8ZEV_8jiYdaVDjKkc-8XPBW8S34wIRl1EbsgCYfMHtJnIJ_3eUgOVorW5KVeN9C8W16LR3lhqRWS9y4qlt0AcWpOvsmxr5q5dS_QqgCjeftCKwJzUsMi5bMW8wKjRZdd-qLz6X1rVSZWX82G0So8nRBg9d3MNJbKcdIJrRbrxWkm8U9xMqRouzbyQ2Hsp2rRVgGh7yjEA6daI5Ao8UsPdBmlCM9oKZ1_Kje5JTfZKeHlT-58vn_ylCjMVlapLuUsDN6He2kPVyOzGbie297VOfjmB7QX0ah1f7Ni1UJFJYHrVK9wMfCLTltSFZBcQ9--FlVdQ",
"e": "AQAB"
}
]
}
19. Конечная точка авторизации
Предоставляет конечную точку авторизации для OIDC провайдера. Это позволяет OIDC клиентам запрашивать код авторизации, который будет использоваться для потока кода авторизации.
| Метод | Путь |
|---|---|
|
|
19.1. Параметры
-
name(string: <обязательно>)- имя провайдера. Этот параметр указывается как часть URL. -
scope(string: <обязательно>)- пробел-разделенный список областей, которые должны быть запрошены. Областьopenidтребуется. -
response_type(string: <обязательно>)- процесс аутентификации OIDC, который будет использован. Поддерживаются следующие типы ответов:code. -
client_id(string: <обязательно>)- ID запрашивающего клиента. -
redirect_uri(string: <обязательно>)- URI редиректа, на который будет отправлен ответ. -
state(string: <необязательно>)- значение, используемое для поддержания состояния между запросом аутентификации и клиентом. -
nonce(string: <необязательно>)- значение, которое возвращается в токене ID в утверждении nonce. Оно используется для снижения атак повторного воспроизведения, поэтому настоятельно рекомендуется предоставлять этот необязательный параметр. -
max_age(integer: <необязательно>)- допустимое время, прошедшее в секундах с последнего активного аутентифицированного пользователя. -
code_challenge(string: <необязательно>)- PKCE кодовое испытание, полученное от проверяющего кода клиента. Необязательно дляconfidentialклиентов. Обязательно дляpublicклиентов. -
code_challenge_method(string: "plain")- метод, который использовался для получения PKCE кодового испытания. Поддерживаются следующие методы:S256,plain.
$ curl \
--request GET \
--header "X-Vault-Token: ..." \
-G \
-d "response_type=code" \
-d "client_id=$CLIENT_ID" \
-d "state=af0ifjsldkj" \
-d "nonce=abcdefghijk" \
--data-urlencode "scope=openid" \
--data-urlencode "redirect_uri=http://127.0.0.1:8251/callback" \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/authorize
{
"code": "BDSc9kVYljxND93YpveBuJtSvguM3AWe",
"state": "af0ifjsldkj"
}
20. Конечная точка токена
Предоставляет конечную точку токена для OIDC провайдера.
| Метод | Путь |
|---|---|
|
|
20.1. Параметры
-
name(string: <обязательно>)- имя провайдера. Этот параметр указывается как часть URL. -
grant_type(string: <обязательно>)- тип авторизационного гранта. Поддерживаются следующие типы грантов:authorization_code,refresh_token.При использовании
authorization_codeвсегда создается OIDC-сессия и выдаетсяrefresh_token. -
code(string: <обязательно при grant_type=authorization_code>)- код авторизации, полученный из конечного пункта авторизации провайдера. -
redirect_uri(string: <обязательно при grant_type=authorization_code>)- место обратного вызова, куда был отправлен запрос на авторизацию. Это должно совпадать сredirect_uri, использованным при генерации первоначального кода авторизации. -
client_id(string: <необязательно>)- ID запрашивающего клиента. Этот параметр требуется дляpublicклиентов, не имеющих секрета клиента, или дляconfidentialклиентов, использующих метод аутентификации клиентаclient_secret_post. -
client_secret(string: <необязательно>)- секрет запрашивающего клиента. Этот параметр требуется дляconfidentialклиентов, использующих метод аутентификации клиентаclient_secret_post. -
code_verifier(string: <необязательно>)- проверяющий код, связанный с даннымcode. Обязательно для авторизационных кодов, выданных с использованием PKCE. Обязательно дляpublicклиентов. -
refresh_token(string: <обязательно при grant_type=refresh_token>)- токен, полученный в предыдущем ответе token endpoint.
20.2. Заголовки
-
Authorization: Basic(string: <необязательно>)- заголовок схемы аутентификации HTTP Basic, включающийclient_idиclient_secret, как описано в методе аутентификации client_secret_basic. Этот заголовок требуется только дляconfidentialклиентов, использующих метод аутентификацииclient_secret_basic.
$ BASIC_AUTH_CREDS=$(printf "%s:%s" "$CLIENT_ID" "$CLIENT_SECRET" | base64)
$ curl \
--request POST \
--header "Authorization: Basic $BASIC_AUTH_CREDS" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d "code=4RL50r78p8HsNJY0GVUNGfjLHnpkRf3N" \
-d "grant_type=authorization_code" \
-d "redirect_uri=http://127.0.0.1:8251/callback" \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/token
{
"access_token": "b.AAAAAQJEH5VXjfjUESCwySTKk2MS1MGVNc9oU-N2EyoLKVo9SYa-NnOWAXloYfrlO45UWC3R1PC5ZShl3JdmRJ0264julNnlBduSNXJkYjgCQsFQwXTKHcjhqdNsmJNMWiPaHPn5NLSpNQVtzAxfHADt4r9rmX-UEG5seOWbmK_Z5WwS_4a8-wcVPB7FpOGzfBydP7yMxHu-3H1TWyQvYVr28XUfYxcBbdlzxhJn0yqkWItgmZ25xEOp7SW7Pg4tYB7AXfk",
"expires_in": 3600,
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImEzMjk5ZWVmLTllNDEtOGNiYS1kNWExLTZmZWM2NjIyODRjYyJ9.eyJhdF9oYXNoIjoiMUdlQlEzUFdtUjJ2ajZVU2swSW42USIsImF1ZCI6InpTSktMVmk0R1BYS1o3TTZzUUEwY3FNc05VaHNPYkVTIiwiY19oYXNoIjoiN09SOUszNmhNdllENzJkUkFLcHhNdyIsImNvbnRhY3QiOnsiZW1haWwiOiJ2YXVsdEBoYXNoaWNvcnAuY29tIiwicGhvbmVfbnVtYmVyIjoiMTIzLTQ1Ni03ODkwIn0sImV4cCI6MTYzMzEwNjI5NCwiZ3JvdXBzIjpbImVuZ2luZWVyaW5nIl0sImlhdCI6MTYzMzEwNDQ5NCwiaXNzIjoiaHR0cDovLzEyNy4wLjAuMC4xOjgyMDAvdjEvaWRlbnRpdHkvb2lkYyIsIm5hbWVzcGFjZSI6InJvb3QiLCJub25jZSI6ImFiY2RlZmdoaWprIn0.ehdLj6jnrJvltar1kkVSyNK48w2M5vkh5DTFJFZDqatnDWhQbbKGLZnVgd3wD6KPboXRaUwhGe4jDiTIiSoJaovOhsia77NKukym_ROLvGZw-LG7xaYkzJLnmEfeQhelLxWe0DHPROB7VXcFqBx8vX5hkuoVyqrB87vwiobK42pDPZ9MRsmbM2yzBC3wrnT7RQFtT4q2Bbyt9YIAHUaq9rU0PwJRoNISw6of1uQHo3_UzLdpwth7PEOEcI47OBGFA5vR_Gw3ocREfSrUWfCWOInAKCT43cImvg4Bts6qiZYfv9n-iNBq4AihGqq_VEF-hB1Hrprn7VgnEZ1VjUHaQQ",
"refresh_token": "cJcBNDsiSTnyDG1gBlsk8yssmv2fqiQWFUpa7eFo7MyiOebQVVdanTXVX4EvvtcB",
"token_type": "Bearer"
}
20.2.1. Grant: refresh_token
|
|
|
Повторное использование старого |
$ BASIC_AUTH_CREDS=$(printf "%s:%s" "$CLIENT_ID" "$CLIENT_SECRET" | base64)
$ curl \
--request POST \
--header "Authorization: Basic $BASIC_AUTH_CREDS" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d "grant_type=refresh_token" \
-d "refresh_token=$REFRESH_TOKEN" \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/token
{
"access_token": "b.AAAA...",
"expires_in": 300,
"id_token": "eyJ...",
"refresh_token": "NEW_REFRESH_TOKEN",
"token_type": "Bearer"
}
|
В |
21. Конечная точка UserInfo
Предоставляет конечную точку UserInfo для OIDC провайдера. Конечная точка UserInfo является защищенным ресурсом OAuth 2.0, который возвращает утверждения о аутентифицированном конечном пользователе.
| Метод | Путь |
|---|---|
|
|
Перед выдачей claims проверяется OIDC-сессия по session_id из метаданных access token. Если сессия отозвана или истекла:
{
"error": "invalid_token",
"error_description": "session has been terminated"
}
|
Batch access token не отзывается при logout, но userinfo отклоняется из-за отсутствия активной OIDC-сессии. |
21.1. Параметры
-
name(string: <обязательно>)- имя провайдера. Этот параметр указывается как часть URL.
21.2. Заголовки
-
Access Token
(string: <обязательно>)- токен доступа, предоставленный заголовком HTTPAuthorization: Bearer <access_token>, полученным с конечного пункта авторизации.
$ curl \
-X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/userinfo
{
"contact": {
"email": "starvault@orionsoft.ru",
"phone_number": "123-456-7890"
},
"groups": [
"engineering"
],
"sub": "5000796e-36df-0d8c-6460-81853d9b2667",
"username": "end-user"
}
22. Чтение и обновление глобальной конфигурации OIDC
Глобальные настройки OIDC, включая параметры для backchannel logout.
| Метод | Путь |
|---|---|
|
|
|
|
22.1. Параметры
-
issuer(string: <необязательно>)- URL, который используется в claimissID token. Если значение не задано, используется api_addr StarVault. -
allowed_backchannel_cidrs([]string: <необязательно>)- список CIDR private-сетей, разрешенных в качестве целевых адресов backchannel_logout_uri. Public IP-адреса разрешены всегда. Loopback-адреса и cloud metadata IP-адреса всегда запрещены. -
backchannel_ca_pem(string: <необязательно>)- PEM-файл с корневыми CA-сертификатами для TLS при подключении к backchannel endpoints. Пустое значение означает использование системных CA-сертификатов.
{
"issuer": "https://vault.example.com:8200",
"allowed_backchannel_cidrs": ["10.0.0.0/8", "172.16.0.0/12"],
"backchannel_ca_pem": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/identity/oidc/config
{
"data": {
"issuer": "https://vault.example.com:8200",
"allowed_backchannel_cidrs": ["10.0.0.0/8"],
"backchannel_ca_pem": ""
}
}
CLI:
vault read identity/oidc/config
vault write identity/oidc/config allowed_backchannel_cidrs="10.0.0.0/8"
23. Token Introspection (RFC 7662)
Позволяет RP проверить валидность access token или refresh token и получить их метаданные.
| Метод | Путь |
|---|---|
|
|
23.1. Параметры
-
name(string: <обязательно>)- имя provider (URL path). -
token(string: <обязательно>)- токен для проверки (access или refresh). -
token_type_hint(string: <необязательно>)- подсказка типа:access_tokenилиrefresh_token. Без hint сначала проверяется как access token. -
client_id(string: <обязательно*>)- ID клиента (если нет Basic Auth). -
client_secret(string: <обязательно для confidential>)- секрет клиента.
23.2. Заголовки
-
Authorization: Basic(string: <обязательно для client_secret_basic>)-base64(client_id:client_secret).
$ curl \
--request POST \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d "token=$ACCESS_TOKEN" \
-d "token_type_hint=access_token" \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/introspect
{
"active": true,
"client_id": "ffzFJtxToRLaHlj4uO5OyhBS31aESxvZ",
"username": "entity_7a52e7b7.root",
"sub": "f03374bc-0dcd-2ae1-ae55-63e390249321",
"exp": 1770818402,
"iat": 1770818102,
"iss": "http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider",
"token_type": "Bearer",
"scope": "openid email profile",
"sid": "Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q"
}
{ "active": false }
CLI: не поддерживается нативно, используйте curl.
24. End Session / Logout (OIDC RP-Initiated Logout 1.0)
Позволяет RP инициировать выход пользователя из OIDC provider. Отзывает OIDC-сессии entity (Single Logout) и отправляет backchannel logout уведомления.
| Метод | Путь |
|---|---|
|
|
24.1. Параметры
-
name(string: <обязательно>)- имя provider (URL path). -
id_token_hint(string: <необязательно>)- ID токен, ранее выданный OP. Используется для определения сессии (sid,sub,aud). Подпись и issuer проверяются;expне проверяется. -
logout_hint(string: <необязательно>)- hint о пользователе (принимается, логируется). -
client_id(string: <необязательно>)- OAuth 2.0 Client ID. Обязателен, если указанpost_logout_redirect_uriбезid_token_hint. -
post_logout_redirect_uri(string: <необязательно>)- URI редиректа после logout. Должен быть зарегистрирован вpost_logout_redirect_urisклиента. -
state(string: <необязательно>)- opaque value для сохранения состояния между запросом и callback. -
ui_locales(string: <необязательно>)- BCP47 language tags (принимается без ошибки).
$ curl -G \
--data-urlencode "id_token_hint=$ID_TOKEN" \
--data-urlencode "post_logout_redirect_uri=http://localhost:8080/logged-out" \
--data-urlencode "state=logoutstate" \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/logout
{
"logout": "successful",
"post_logout_redirect_uri": "http://localhost:8080/logged-out?state=logoutstate",
"revoked_session_id": "Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q"
}
{
"error": "invalid_request",
"error_description": "post_logout_redirect_uri requires either id_token_hint or client_id",
"state": "logoutstate"
}
|
Logout не отзывает service токен StarVault ( |
CLI: не поддерживается нативно, используйте curl.
25. Список активных OIDC-сессий
Возвращает список активных OIDC-сессий provider. Admin API - требует StarVault токен.
| Метод | Путь |
|---|---|
|
|
25.1. Параметры
-
name(string: <обязательно>)- имя provider (URL path). -
entity_id(string: <необязательно>)- query-параметр, фильтр по entity ID. -
client_id(string: <необязательно>)- query-параметр, фильтр по client ID.
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
"http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/sessions?client_id=$CLIENT_ID"
{
"data": {
"keys": ["Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q"],
"key_info": {
"Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q": {
"entity_id": "f03374bc-0dcd-2ae1-ae55-63e390249321",
"client_id": "ffzFJtxToRLaHlj4uO5OyhBS31aESxvZ",
"client_name": "test-oidc-client",
"creation_time": "2026-02-11T16:55:02+03:00",
"expiration": "2026-02-11T17:55:02+03:00",
"last_activity": "2026-02-11T16:55:02+03:00",
"scopes": ["openid"],
"ip_address": "127.0.0.1"
}
}
}
}
CLI:
vault list identity/oidc/provider/test-provider/sessions
vault list -format=json identity/oidc/provider/test-provider/sessions
26. Чтение OIDC-сессии по ID
Возвращает детальную информацию о конкретной OIDC-сессии.
| Метод | Путь |
|---|---|
|
|
26.1. Параметры
-
name(string: <обязательно>)- имя provider (URL path). -
session_id(string: <обязательно>)- ID сессии (claimsidиз ID токен).
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/sessions/Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q
{
"data": {
"session_id": "Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q",
"provider_name": "test-provider",
"client_id": "ffzFJtxToRLaHlj4uO5OyhBS31aESxvZ",
"client_name": "test-oidc-client",
"entity_id": "f03374bc-0dcd-2ae1-ae55-63e390249321",
"entity_name": "entity_7a52e7b7.root",
"scopes": ["openid"],
"creation_time": "2026-02-11T16:55:02+03:00",
"expiration": "2026-02-11T17:55:02+03:00",
"last_activity": "2026-02-11T16:55:02+03:00",
"ip_address": "127.0.0.1",
"user_agent": "",
"is_expired": false,
"has_refresh_token": true
}
}
CLI:
vault read identity/oidc/provider/test-provider/sessions/$SESSION_ID
27. Отзыв OIDC-сессии
Принудительно отзывает OIDC-сессию. Удаляет сессию и refresh токен mapping, отправляет backchannel logout клиенту.
| Метод | Путь |
|---|---|
|
|
27.1. Параметры
-
name(string: <обязательно>)- имя provider (URL path). -
session_id(string: <обязательно>)- ID сессии.
$ curl \
--header "X-Vault-Token: ..." \
--request DELETE \
http://127.0.0.1:8200/v1/identity/oidc/provider/test-provider/sessions/Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q
{
"data": {
"revoked": true,
"session_id": "Sl2lUvQ7QZSOYGZYIwT4EcXPj2RdB20q",
"entity_id": "f03374bc-0dcd-2ae1-ae55-63e390249321",
"client_id": "ffzFJtxToRLaHlj4uO5OyhBS31aESxvZ"
}
}
CLI:
vault delete identity/oidc/provider/test-provider/sessions/$SESSION_ID
Поведение после отзыва:
-
Refresh токен перестает работать.
-
UserInfo/Introspect возвращают
active: false/session has been terminated. -
Service токен StarVault (
s.xxx) не отзывается. -
Batch access токен остается до TTL, но непригоден без сессии.