OAuth2 имеет 4 типа предоставления.Чтобы быстро понять разницу между «Учетными данными пароля владельца ресурса», «Кодом авторизации», «Неявным», давайте сравним их бок о бок:
ПРИМЕЧАНИЕ: Полное объяснение доступно по адресу: https://blog.oauth.io/oauth2-flow-grant-types-in-pictures/.
Чтобы ответить на ваш вопрос:
- Какой тип гранта лучше всего подходит для моих нужд, из того, что я прочитал тип разрешения кода авторизации, кажется, подходит?Или это неявно?
Если сравнивать на основе «Безопасность» фиолетовую полосу, то «Код авторизации» лучше всего.Однако вы можете видеть, что у него есть концепция Guard (бэкэнд), которая осуществляет доступ к хранилищу данных пользователя от имени приложения (веб-интерфейс), т. Е. Приложение никогда не имеет доступа к ключу / токену доступа напрямую,поскольку ключ извлекается путем обмена именем пользователя / паролем между пользователем и сервером OAuth, а затем передается гвардии.
Реализованные вами «учетные данные пароля владельца ресурса» наименее безопасны, так какимя пользователя / пароль передается в приложение для приложения, чтобы делать все, что может пользователь без его согласия.Однако в вашем сценарии приложение и хранилище пользовательских данных принадлежат вам, что устраняет проблему безопасности.
В зависимости от ответа на вопрос 1, какие изменения кода мне нужно внести в приведенный ниже код:
Полный поток реализованного вами типа предоставления учетных данных пароля владельца ресурса является левой частьюизображение ниже и тип предоставления кода авторизации является правой частью.Как видите, обычно есть 5 шагов.Для учетных данных владельца ресурса некоторые шаги не требуются, т. Е. Отмечены как «NA».
ПРИМЕЧАНИЕ:
- «Облако» представляет приложение
- «www» представляет пользователя / браузер
- «Сейф» представляет OAuth-сервер
Чтобы перейти с левой стороны на правую, вам потребуются следующие изменения:
Шаг 1. Если ваш сервер OAuth будет поддерживать разные приложения, то он должен поддерживать предварительную регистрацию приложений.получить идентификатор клиента / секрет.Если у вас есть только одно приложение, вы можете пропустить это.
Шаг 2. Вместо того, чтобы приложение запрашивало имя пользователя / пароль, теперь приложение будет перенаправлять пользователя на сервер OAuth для выполнения аутентификации по имени / паролю
Шаг 3. После аутентификации Пользователя OAuth-сервер может запросить Пользователя о том, какие разрешения (например, чтение электронной почты, обновление профиля и т. Д.) Он хочет предоставить Приложению
Шаг 4.Сервер OAuth вместо передачи токена ключа / доступа в приложение передает код пользователю, который затем передает его приложению
Шаг 5. Затем приложение обменивается кодом для токена ключа / доступа сOAuth Server.
Получив ключ / токен доступа, вы можете вызвать любой защищенный API на другом сервере, который затем может проверить ключ / доступ токена на сервере OAuth перед ответом на запрос API, например, вернутьгруппы, к которым принадлежит пользователь.