#oauth-2.0 #openid-connect
#oauth-2.0 #OpenID-подключиться
Вопрос:
Я начал интересоваться спецификацией OAuth 2.0 и не уверен, правильно ли то, что я понял до сих пор.
OAuth — это протокол авторизации, в то время как OpenID Connect — это протокол аутентификации, который расширяет OAuth.
Первый касается авторизации доступа к стороннему ресурсу с помощью клиентского приложения. Например, вы создаете какое-либо приложение и хотели бы использовать функции (ресурсы) какого-либо другого приложения (которое не принадлежит вам).
С другой стороны, OpenID connect занимается авторизацией, уполномочивая некоторую человеческую сущность путем проверки его / ее личности, например, для доступа к определенному ресурсу, к которому имеет доступ только он / она. Например, вы являетесь банковским приложением и разрешаете пользователям доступ к своей учетной записи, но сначала им необходимо подтвердить свою личность у поставщика авторизации.
Итак, можно ли с уверенностью сказать, что авторизация предназначена для взаимодействия с приложением, а аутентификация — для взаимодействия с человеком?
Ответ №1:
Ваше понимание OAuth и OpenID Connect правильное. Когда был введен OAuth, он определял способ получения токенов доступа, которые удерживающая сторона может использовать против конечной точки, защищенной токенами доступа OAuth. Это позволило хранить идентификационные данные в центральном месте (сервер авторизации, он же identity servcer) и в этом центральном месте поддерживать процесс получения токена (который также включает аутентификацию пользователя).
В то время как токен доступа используется для предоставления доступа (авторизации), OpenID Connect ввел идентификационный токен, который передается вместе с токеном доступа. Токен ID предназначен для использования клиентским приложением, которое используется для аутентификации конечного пользователя.
Для получения токена требуется аутентификация на сервере авторизации. В зависимости от потока получения токена (он же OAuth grant), в этой аутентификации будет задействован пользователь-человек. Также возможно следовать потоку, в котором не участвует пользователь-человек. Такой поток создает только токен доступа. И OpenID Connect могут использоваться только при участии пользователя.
В: Так можно ли с уверенностью сказать, что авторизация предназначена для взаимодействия с приложением, а аутентификация — для взаимодействия с человеком?
Если в вашем приложении (клиенте) задействован конечный пользователь, то этот пользователь может участвовать в потоке получения токена. И вы можете получить токен доступа, а также токен идентификатора. Затем вы используете токен ID для аутентификации конечного пользователя. И токен доступа используется для соединения с другой конечной точкой.
Если в вашем приложении не задействован конечный пользователь (например,- служба), то вы будете использовать OAuth для получения токена доступа, который используется для другой конечной точки.