Я пытаюсь понять, как реализовать грант кода авторизации в Azure. Я не уверен, что я правильно понимаю это, но вот оно. У меня есть 2 службы приложений в Azure (1 для моего API и еще 1 для хранения моего приложения Reactjs, где у него есть пользовательский интерфейс). Чтобы защитить свой Api, я планирую реализовать грант кода авторизации.
Насколько я понимаю, поток будет таким:
В моем SPA мне нужно чтобы сначала проверить, аутентифицирован ли пользователь, если нет, мне нужно перенаправить пользователя на:
https://login.microsoftonline.com/ {tenant} /oauth2/v2.0/authorize? client_id = 6731de76-14a6-49ae-97b c -6eba6914391e & response_type = code & redirect_uri = http% 3A% 2F% 2Flocalhost% 2Fmyapp% 2F & response_mode = query & scope = openid% 20offline_access% 20https.com% 3A% 2Fsoft% 2F % 2Fmail.read & state = 12345
После того, как пользователь предоставил, он должен вернуть код авторизации
(Эта часть немного сбивает с толку меня). Поскольку я использую просто Javascript (ReactJS), я думаю, что хранить секрет клиента в моем коде небезопасно. Итак, я думаю, что передаю код авторизации моему API, и внутри моего API он свяжется с конечной точкой токена
// разрывы строк только для удобочитаемости
POST / {tenant} / oauth2 / v2.0 / token HTTP / 1.1 Хост: https://login.microsoftonline.com Content-Type: application / x- www-form-urlencoded
client_id = 6731de76-14a6-49ae-97b c -6eba6914391e & сфера = HTTPS% 3A% 2F% 2Fgraph.microsoft.com% 2Fmail.read & код = OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr ... & redirect_uri = HTTP% 3A% 2F% 2Flocalhost% 2Fmyapp% 2F & grant_type = authorization_code & client_secret = JqQX2PNo9bpM0uEihUPzyrh
Я прочитал статью о том, что «Неявный поток грантов» предназначен для SPA, но он старый и уже не защищен. Я не уверен, следует ли мне использовать «Предоставление кода авторизации» или «Неявный поток предоставления» в моей ситуации.