Использование OAuth и OpenID connect

#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 для получения токена доступа, который используется для другой конечной точки.