Почему аутентификация клиента НЕ является обязательной с предоставлением кода авторизации и неявным предоставлением в OAuth2.0 - PullRequest
1 голос
/ 16 апреля 2019

Согласно RFC6749, глава 4.1.1: https://tools.ietf.org/html/rfc6749#section-4.1.1 В спецификации запроса авторизации для предоставления кода авторизации, Для аутентификации требуется только client_id. Поскольку тип клиента может быть общедоступным, это означает, что любой может получить код авторизации, а затем использовать его в запросе токена доступа - https://tools.ietf.org/html/rfc6749#section-4.1.3. Здесь вам нужно только указать client_id (который является открытым), код авторизации (который может получить без аутентификации), redirect_uri и grant_type (не для целей аутентификации / авторизации), и тогда вы сможете получить токен доступа!

У меня вопрос: почему НЕТ какой-либо обязательной процедуры авторизации / аутентификации для этого типа гранта, тогда какова цель получения этого типа гранта? То же самое в неявном гранте.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Сервер OAuth2 выдает код авторизации после аутентификации пользователя и после того, как пользователь подтверждает согласие на делегирование прав клиенту (обозначено client_id).Код авторизации затем отправляется в качестве параметра на зарегистрированный URI перенаправления клиента.Так что я не знаю, что вы подразумеваете под «любой может получить код авторизации» .

Публичные клиенты должны использоваться с расширением PKCE OAuth2.Который служит одноразовым паролем.Таким образом, даже если код авторизации будет украден, его нельзя заменить на токены, не зная параметра code_verifier конечной точки токена.

Если злоумышленник создает вредоносное приложение, используя чужой client_id (притворяясь клиентом), код авторизации будет по-прежнему отправляться на URL-адрес перенаправления клиента.Если злоумышленник завладеет этим обработчиком URL-адреса, это, вероятно, является проблемой, выходящей за рамки протокола OAuth2.

1 голос
/ 17 апреля 2019

Аутентификация клиента не является обязательной только для клиентов, которые зарегистрированы как общедоступные клиенты, такие как мобильное собственное приложение. Мобильное приложение не может надежно хранить секрет клиента, поэтому оно не является обязательным при предоставлении кода авторизации и неявном предоставлении. Клиентское приложение, такое как веб-приложение, которое может надежно хранить секретный клиент на сервере, такие клиенты должны быть зарегистрированы как конфиденциальные клиенты. Клиенты, которые зарегистрированы как конфиденциальные клиенты, должны предоставлять как идентификатор клиента, так и секрет для аутентификации клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...