ARIS Docs/SSO/Flow OAuth-кода
Flow OAuth-кода
«Войти через ARIS» — упрощённый OAuth-2.0 authorization-code. Маркетплейс перенаправляет пользователя в ARIS, получает одноразовый код, меняет его на профиль.
1. Редирект на /sso/authorize
https://arisdoc.cloud/sso/authorize
?client_id=aris-metal
&redirect_uri=https://ntsmetall.ru/aris/callback
&state=<random-csrf-token>
Если пользователь уже залогинен в ARIS-кабинете — он сразу возвращается на ваш redirect_uri с одноразовым code. Иначе видит форму входа, после которой — тот же редирект.
2. Callback
ARIS делает 302 на ваш URL:
https://ntsmetall.ru/aris/callback?code=ac_AfpiwmU…&state=<csrf-token>
Обязательно сверяйте
state с тем, что вы выдали в шаге 1 — это защита от CSRF.3. Обмен code на профиль
curl -X POST https://arisdoc.cloud/sso/token \
-H "Content-Type: application/json" \
-d '{
"client_id": "aris-metal",
"client_secret": "cs_xxxxxxxxxxxxxxxxxxxx",
"code": "ac_AfpiwmU…",
"redirect_uri": "https://ntsmetall.ru/aris/callback"
}'
Ответ:
{
"aris_id": "a3404bea-2770-4627-a4e5-dd1194c9c557",
"email": "buyer@example.com",
"name": "ООО Покупатель",
"org": {
"id": "f6106a48-7451-4f27-9ebb-30f2a94b4cb1",
"name": "Demo workspace"
}
}
Ограничения
- Код одноразовый. Повторный обмен → 400 «Код уже использован».
- TTL 5 минут. Просроченный код → 400.
- Жёсткая привязка к
redirect_uri. Если URI не совпадает с переданным в шаге 1 — 400. - client_secret проверяется через
hmac.compare_digest— без таймингов-утечек.