Как OAuth2.0 реализует авторизацию? - PullRequest
2 голосов
/ 10 апреля 2020

Сейчас я изучаю топи c, и, насколько я понимаю, OAuth 2.0 должен быть протоколом авторизации пользователей на веб-сервере. Когда дело доходит до аутентификации, это довольно просто - клиент отправляет запрос поставщику удостоверений, получает токен, который содержит дополнительную информацию (например, JWT), затем он отправляет этот токен на сервер приложений, сервер приложений проверяет токен с помощью провайдер идентификации. Все хорошо, пока здесь.

Моя проблема - авторизация - зная, какие разрешения имеет пользователь на сервере приложений. Насколько я понимаю, часть запроса, относящаяся к области действия, относится к вещам, которые пользователь позволяет серверу приложений выполнять на своей сущности в провайдере идентификации, поэтому это авторизация, но она авторизует только сервер приложений.

Содержит ли протокол какой-либо способ для сервера приложений авторизовать клиента, или он предполагает, что данные, такие как роли и области действия каждого пользователя, будут управляться сервером приложений? Я полагаю, что такие данные могут быть отправлены поставщиком удостоверений на токене, но как тогда разрешения каждого пользователя управляются с поставщиком удостоверений? Это часть протокола? Если нет, то почему он называется «протокол авторизации»?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Цель OAuth2 - позволить клиентскому приложению вызывать сервер API от имени пользователя. Области определяют, что клиентское приложение может сделать с данными пользователя на этом сервере API. Это называется делегированной авторизацией, поскольку пользователь делегирует некоторые разрешения клиентскому приложению.

Теперь некоторые серверы авторизации позволяют вам определять роли для сервера ресурсов и включать их в качестве утверждений в маркер доступа. Это неявный договор между сервером авторизации и сервером ресурсов о том, как эти роли интерпретируются. Роли не являются частью OAuth2 RF C.

0 голосов
/ 12 апреля 2020

В дополнение к тому, что сказал MvdD, авторизация означает, что пользователь предоставляет клиентскому приложению некоторый доступ к защищенному ресурсу, которым владеет этот пользователь.

Когда пользователь отправляется на сервер авторизации для аутентификации, сервер авторизации должен спросить что-то вроде: «Разрешаете ли вы этому клиентскому приложению доступ к вашему защищенному ресурсу?» Иногда вы видите это как «X application хочет видеть вашу электронную почту, адрес, номер телефона, ...»

Области указывают, какие действия разрешены. Маркер доступа, который позволяет клиентскому приложению получить доступ к защищенному ресурсу. Сервер ресурсов должен разрешать только действия, связанные с областями в маркере доступа.

...