Бестпрактис описан тут: https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow
- На моем сайте пользователь тыкает кнопку "войти по ссо" которая редиректит на следующую ссылку
https://oauth.alor.ru/authorize?client_id={{client_id}}&redirect_uri={{redirect}}&response_type=code&state=&scope=ordersread%20trades%20personal
- На вашем сайте для разработчиков авторизовываюсь через логин пароль
GET https://lk-api.alor.ru/auth/actions/2factor/?login={{login}} POST https://lk-api.alor.ru/auth/actions/login
{
"credentials": {
"login": "login",
"password": "password",
"twoFactorPin": null
},
"requiredServices": [
"clientApi",
"Warp"
]
}
- Даю доступ к приложени по правам
POST https://devs.alor.ru/devapi/v1/oauth/code
[
"ordersread",
"trades",
"personal"
]
- Сайт редиректит по моему redirectUri с переданным вашим code
- Запрашиваю уже на своем сайте
POST https://oauth.alor.ru/token
отдавая полученный code, получаю access/refresh token
code: {{code}}
grant_type: authorization_code
redirect_uri: {{redirectUri}}
client_id: {{client_id}}
client_secret: {{client_secret}}
- Заходим на https://login.alor.ru/?url=https://lk.alor.ru/main&scope=ClientAccount
- Вводим логин пароль
- Отправляется запрос
GET https://lk-api.alor.ru/auth/actions/2factor/?login={{login}}
POST https://lk-api.alor.ru/sso-auth/client
{"credentials":{"login":"login","password":"password","twoFactorPin":null},"client_id":"SingleSignOn","redirect_url":"//lk.alor.ru/"}
POST https://lk-api.alor.ru/auth/actions/refresh
отдаю refreshToken (пока не понял откуда) и в ответ получаю jwt
- Заходим на любой сайт (лк, терминал или доверенный сайт разработчика)
- Делаем с текущего сайта запрос на авторизационный сайт за токеном
- Запрос падает, редиректим на сайт авторизации
https://{yourDomain}/authorize?
response_type=code&
client_id={yourClientId}&
redirect_uri={https://yourApp/callback}&
scope={scope}&
state={state}
В ответ нам отдается 302 с Location: {https://yourApp/callback}?code={authorizationCode}&state=xyzABC123 который автоматом редиректит нас по указанной ссылке
- Логинимся на авторизационном сайте, он редиректит нас на наш сайт передавая нам code И вешает куку-сессию как признак авторизации на сайт авторизации. Если мы уже были на нем залогинены (есть кука, то нас автоматически редиректит)
- С этим code мы запрашиваем уже токен и работаем с ним
curl --request POST \
--url 'https://{yourDomain}/oauth/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=authorization_code \
--data 'client_id={yourClientId}' \
--data 'client_secret={yourClientSecret}' \
--data 'code=yourAuthorizationCode}' \
--data 'redirect_uri={https://yourApp/callback}'