Как реализовать предоставление кода авторизации в Azure - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь понять, как реализовать грант кода авторизации в Azure. Я не уверен, что я правильно понимаю это, но вот оно. У меня есть 2 службы приложений в Azure (1 для моего API и еще 1 для хранения моего приложения Reactjs, где у него есть пользовательский интерфейс). Чтобы защитить свой Api, я планирую реализовать грант кода авторизации.

Насколько я понимаю, поток будет таким:

  1. В моем 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

  2. После того, как пользователь предоставил, он должен вернуть код авторизации

  3. (Эта часть немного сбивает с толку меня). Поскольку я использую просто 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, но он старый и уже не защищен. Я не уверен, следует ли мне использовать «Предоставление кода авторизации» или «Неявный поток предоставления» в моей ситуации.

1 Ответ

0 голосов
/ 12 июля 2020

Рекомендации следующие:

  • Используйте поток кода авторизации (PKCE) в вашем SPA
  • Используйте библиотеку безопасности для обеспечения безопасности SPA за вас

В этом случае создается секрет времени выполнения, а секрет клиента отсутствует. Может быть, эти мои ресурсы восполнят некоторые пробелы для вас:

...