Github OAuth2 не поддерживает аутентификацию клиента? - PullRequest
2 голосов
/ 09 ноября 2019

Что ж, в спецификации OAuth2 предусмотрены случаи, когда вы проходите аутентификацию в приложении, которое полностью работает на стороне клиента (браузеры, мобильные телефоны и т. Д.), И поэтому они не способны защитить свой код / ​​данные.

В памятке относительно Security Considerations говорится, что вы не должны хранить учетные данные в нашем коде (я думаю, по понятным причинам):

https://tools.ietf.org/html/rfc6819#section-5.3.1

Кроме того, в памятке онативным клиентам настоятельно рекомендуется, чтобы серверу авторизации не требовался секрет приложения:

https://tools.ietf.org/html/rfc8252#section-8.5

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

https://www.oauth.com/oauth2-servers/mobile-and-native-apps/authorization/


В любом случае, в документации Github указано, что client_secret является обязательным для получения access token:

https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#2-users-are-redirected-back-to-your-site-by-github

Согласно официальной спецификации, вы должны этого достичь, но я не смог найти способ добиться этого с помощью Github OAuth, и вотмой вопрос:

Есть ли способ использовать Github OAuth для получения access token без использования client_secret?

1 Ответ

0 голосов
/ 11 ноября 2019

Итак, есть ли способ использовать Github OAuth, получить токен доступа без использования client_secret?

Не то, что я вижу при рассмотрении шага авторизации .

Приложение обменивает этот код на токен доступа.

Когда приложение отправляет запрос на токен доступа, этот запрос аутентифицируется секретом клиента, что снижает риск того, что злоумышленник перехватит код авторизации и сам его использует.

Это означает, что если приложению необходимо автоматизировать этот шаг от имени клиента, оно должно извлечь этот секрет из сторонней ссылки, например хранилища.

См. экземпляр puppetlabs/vault-plugin-secrets-oauthapp, который представляет собой плагин, обеспечивающий безопасную оболочку для потоков предоставления кода авторизации OAuth 2, позволяющий клиенту Vault запрашивать авторизацию от имени пользователя и выполнять действия с использованием согласованного токена доступа OAuth 2.
(здесь Valut равен hashicorp/vault)

...