#oauth-2.0 #authorization
Вопрос:
В контексте OAuth2.0, После того, как RO (Владелец ресурса) утвердит согласие (нажимает «Разрешить») , AS (Сервер авторизации) перенаправит клиента на переданный клиентом redirect_uri и добавит параметры запроса, например (код и состояние):
https://example-app.com/redirect?code=<the auth code>amp;state=<state>
Затем клиент должен обменять (отправляет их в AS): authorization_code client_id client_secret
на токен доступа
Okta определяет client_secret как таковой:
client_secret — Секрет клиента приложения. Это гарантирует, что запрос на получение маркера доступа будет сделан только из приложения, а не от потенциального злоумышленника, который, возможно, перехватил код авторизации
НО как, черт возьми, Сервер авторизации знает, как проверить то client_secret
, что создал клиент ???
Ответ №1:
Клиент не создавал секрет клиента. При создании нового клиента на сервере авторизации сервер авторизации генерирует секрет клиента (если тип клиента является конфиденциальным, у открытого клиента нет секрета). Вы получаете идентификатор client_id и client_secret с сервера авторизации и используете его в своем клиенте.
Комментарии:
1. Хорошо, итак, в случае публичного клиента, как AS проверяет, что клиенту доверяют? если публичный клиент не отправляет client_secret
2. Вам нужен токен доступа для доступа к ресурсам, поэтому пользователь должен войти в систему. Я не уверен, какой проверки вы ожидаете. Публичные клиенты менее защищены, чем конфиденциальные.
3. Вы должны использовать PKCE, чтобы предотвратить хакера, который перехватил код авторизации для получения токенов.