API для работы с динамическими клиентами#
Внимание
API-запросы отправляются на адрес https://login.company.com/<context>/<url>, где context — заданный относительный путь до сервисов Blitz Identity Provider, url - адрес метода, приведенный в настоящем разделе. По умолчанию API-запросы отправляются на https://login.company.com/blitz/<url>.
API предназначен для работы с данными, используемыми при динамической регистрации клиентов.
API позволяет:
генерировать
software_statement;получать список
Initial Access Token(IAT) приложения;создавать
IAT;удалять
IAT.
Методы API вызываются через административные сервисы по адресу:
/admin/api/v3/app/{appId}/oauth/...
где {appId} — идентификатор приложения, для которого выполняется операция.
Внимание
Необходимо указать разрешения (scope) blitz_api_sys_app и blitz_api_sys_app_chg среди допустимых разрешений, которые имеет право запрашивать данное приложение.
Генерация software_statement#
PUT /admin/api/v3/app/{appId}/oauth/softStm
Генерирует software_statement.
Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app_chg.
JSON:
softwareVersion- версия приложения (обязательный параметр);Внимание
Версия приложения должна соответствовать версии первичного маркера IAT, используемого приложением.
redirectUris- префиксы ссылок возврата. Префикс используется для проверки ссылок возврата. Если в запросе на аутентификацию указана ссылка возврата и она не соответствует ни одному из указанных префиксов, то в аутентификации будет отказано.tokenEndpointAuthMethod- метод аутентификации при обращении к сервису выдачи маркеров. Указанный метод аутентификации должен использоваться инстансом приложения при обращении к сервису выдачи маркеров.grantTypes- списокgrant type, которые будут доступны экземпляру приложения.responseTypes- списокresponse type, которые будут доступны экземпляру приложения при обращении к URL авторизации.scope- разрешения (scope), которые будут доступны приложению.
Пример
curl --location --request PUT 'https://login.company.com/blitz/admin/api/v3/app/exampleApp/oauth/softStm' \
--header 'Authorization: Bearer eyJra...CQQ' \
--header 'Content-Type: application/json' \
--data-raw '{
"softwareVersion": "1",
"redirectUris": [
"https://example.com/callback"
],
"tokenEndpointAuthMethod": "client_secret_basic",
"grantTypes": [
"authorization_code"
],
"responseTypes": [
"code",
"token"
],
"scope": [
"openid",
"profile"
]
}'
200 ОК
"eyJr...QJA"
401 Unauthorized
{
"type": "security_error",
"error": "bad_access_token",
"desc": "token_not_found"
}
404 Not Found
{
"type": "process_error",
"error": "client_not_found",
"desc": "unknown client 'badAppId'"
}
400 Bad Request
{
"type": "input_error",
"error": "wrong_values",
"errors": [
{
"type": "input_error",
"error": "json.error.mandatory.field",
"desc": "json.error.expected.string",
"pos": "softwareVersion"
},
{
"type": "input_error",
"error": "json.error.expected.uri",
"desc": "Illegal character in scheme name at index 0: а:ff",
"pos": "redirectUris.[0]"
},
{
"type": "input_error",
"error": "wrong_value",
"desc": "unexpected values [authorization_code1]",
"pos": "grantTypes"
},
{
"type": "input_error",
"error": "wrong_value",
"desc": "unexpected values [token1]",
"pos": "responseTypes"
},
{
"type": "input_error",
"error": "wrong_value",
"desc": "wrong value client_secret_basic1, expected some of [none,client_secret_basic,client_secret_post]",
"pos": "tokenEndpointAuthMethod"
},
{
"type": "input_error",
"error": "wrong_value",
"desc": "unexpected values [profile1]",
"pos": "scope"
}
]
}
Получение IAT приложения#
GET /admin/api/v3/app/{appId}/oauth/iat
Возвращает IAT приложения.
Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app.
Пример
curl --location --request GET 'https://login.company.com/blitz/admin/api/v3/app/exampleApp/oauth/iat' \
--header 'Authorization: Bearer eyJra...qElQ' \
200 ОК
[
{
"createdOn": 1769437759,
"softwareVersion": "1",
"softwareId": "exampleApp",
"id": "ZYzL...mQ"
}
]
401 Unauthorized
{
"type": "security_error",
"error": "bad_access_token",
"desc": "token_not_found"
}
404 Not Found
{
"type": "process_error",
"error": "client_not_found",
"desc": "unknown client 'badAppId'"
}
Создание IAT приложения#
PUT /admin/api/v3/app/{appId}/oauth/iat
Создает IAT приложения.
Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app_chg.
JSON:
softwareVersion- версия приложения (обязательный параметр).
Пример
curl --location --request PUT 'https://login.company.com/blitz/admin/api/v3/app/exampleApp/oauth/iat' \
--header 'Authorization: Bearer eyJra...ElQ' \
--header 'Content-Type: application/json' \
--data-raw '{
"softwareVersion": "1"
}'
200 ОК
{
"createdOn": 1769594410,
"softwareVersion": "1",
"softwareId": "exampleApp",
"id": "GbhF...qw"
}
401 Unauthorized
{
"type": "security_error",
"error": "bad_access_token",
"desc": "token_not_found"
}
404 Not Found
{
"type": "process_error",
"error": "client_not_found",
"desc": "unknown client 'badAppId'"
}
400 Bad Request
{
"type": "input_error",
"error": "wrong_values",
"errors": [
{
"type": "input_error",
"error": "json.error.mandatory.field",
"desc": "json.error.expected.string",
"pos": "softwareVersion"
}
]
}
Удаление IAT приложения#
DELETE /admin/api/v3/app/{appId}/oauth/iat/{tokenId}
Удаляет IAT приложения.
Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app_chg.
Пример
curl --location --request DELETE 'https://login.company.com/blitz/admin/api/v3/app/exampleApp/oauth/iat/SmCYp...aqw' \
--header 'Authorization: Bearer eyJra...ElQ'
204 No Content
401 Unauthorized
{
"type": "security_error",
"error": "bad_access_token",
"desc": "token_not_found"
}
404 Not Found
{
"type": "process_error",
"error": "client_not_found",
"desc": "unknown client 'badAppId'"
}