Каковы пределы публичных клиентов в OAuth 2.0

OAuth 2.0 определяет два типа клиентов:

  • public (client_id)
  • конфиденциальный (client_id: client_secret)

и в разделе 2.2 говорится:

Идентификатор клиента не является секретом; он предоставляется владельцу ресурса и НЕ ДОЛЖЕН использоваться отдельно для проверки подлинности клиента.

Хотя мне ясно, что публичные клиенты в основном используются для неявного потока, для этого есть нечто большее, чем кажется. При выполнении потока кода аутентификации мы сначала запрашиваем конечную точку авторизации с нашим client_id, не требуя секрета. Затем, получив согласие пользователя и код авторизации, мы запрашиваем конечную точку маркера. Согласно спецификации, мы можем запросить эту конечную точку без client_secret:

client_id
     REQUIRED, if the client is not authenticating with the
     authorization server as described in Section 3.2.1.

Если тип клиента является конфиденциальным или клиенту были выданы учетные данные клиента (или назначены другие требования проверки подлинности), клиент ДОЛЖЕН пройти аутентификацию с сервера авторизации, как описано в разделе 3.2.1.

...

Сервер авторизации ДОЛЖЕН:

...
o ensure that the authorization code was issued to the authenticated
  confidential client, or if the client is public, ensure that the
  code was issued to "client_id" in the request,

Таким образом, в основном в этом разделе говорится, что мы можем запросить эту конечную точку без секретариата клиента. Теперь он ничего не говорит о токенах обновления, кроме тех, которые могут быть включены в запрос.

Обновление токена доступа:

Поскольку токены обновления - это, как правило, длительные учетные данные, используемые для запроса дополнительных токенов доступа, токен обновления привязан к клиенту, которому он был выпущен. Если тип клиента является конфиденциальным или клиенту были выданы учетные данные клиента (или назначены другие требования проверки подлинности), клиент ДОЛЖЕН пройти аутентификацию с сервера авторизации, как описано в разделе 3.2.1.

Таким образом, в основном нам разрешено обновлять токен доступа без проверки подлинности клиента.

Теперь меня смущает то, что неявный поток не позволяет выдавать токены обновления:

Сервер авторизации НЕ ДОЛЖЕН выдавать токен обновления.

В нем явно не говорится, почему мы не можем этого сделать, только нам не разрешено. Мое рассуждение состоит в том, что это не допускается, потому что клиенту нельзя доверять. Но поскольку разрешенный поток кода разрешен для публичных клиентов, почему нам действительно нужен неявный поток, если то же самое можно сделать с открытым клиентом, а также получить токен обновления?

Я был бы очень рад, если бы кто-нибудь мог это прояснить.

+2
источник поделиться

На данный вопрос пока никто не ответил

Посмотрите похожие вопросы:

Посмотрите другие вопросы по меткам или Задайте вопрос