grant_type в Spring-Security-OAuth2
Я новичок в концепции OAuth2. Я должен реализовать это в своем приложении. Это приложение предоставляет API REST. Я следовал некоторому руководству, провел некоторые исследования и реализовал его в рабочем состоянии в своем приложении.
Но во время поиска я прочитал о grant_type
в OAuth2. Я пытался узнать об этом, но не получил реальных различий и что я должен использовать для защиты API REST. Поэтому я хочу знать, что для grant_type
типы "пароль","client_credential" и т. д., которые следует использовать и в каком сценарии, или которые следует использовать для защиты API REST?
Также в некоторых местах я обнаружил, что запрос на /oauth/token
это отличается. Некоторые места Authorization
заголовок задается как Basic 'some_encoded_string'
, И в каком-то месте это Носитель 'some_encoded_string'. Какая разница в этих запросах?
Подводя итог этому у меня 2 вопроса -
За
grant_type
типы "пароль","client_credential" и т. д., которые следует использовать и в каком сценарии, или которые следует использовать для защиты API REST?Какая разница в способах запроса токена у
/oauth/token
,
Воспользуйтесь моими знаниями в реализации spring-security-oauth2.
1 ответ
Размер гранта, который вам нужно использовать, зависит от вашего варианта использования и характера клиентского приложения, обращающегося к вашим ресурсам. Нет гранта, который применяет REST API
ресурс в целом. Вам нужно будет предоставить больше информации о том, что такое API и как вы взаимодействуете с ними.
Если пользователь должен предоставить свои разрешения клиенту для доступа к API, то вы обычно используете грант "код авторизации". Если клиент обращается к ресурсу напрямую, без вмешательства конечного пользователя, он обычно использует грант "учетные данные клиента".
Вы должны избегать использования password
Предоставлять в большинстве случаев, поскольку это означает, что пользователь должен предоставить свое имя пользователя и пароль клиентскому приложению. Если приложение может использовать другой грант, такой как код авторизации, то это предпочтительнее. Доверенное приложение, такое как собственное приложение, которое пользователь устанавливает на своем компьютере, может быть одной из тех ситуаций, когда может использоваться предоставление пароля.
Клиент обычно использует "базовую" аутентификацию для доступа к конечной точке токена. Аутентификация "на предъявителя" используется для доступа к защищенному ресурсу (например, вашему API), передавая маркер доступа, полученный от сервера авторизации.
Как вы думаете, зачем вообще нужно использовать OAuth2? Мне любопытно, потому что вы говорите, что не понимаете, для чего предназначены виды грантов. Вам действительно нужно понять это, прежде чем вы сможете принять решение о том, как вы будете использовать OAuth2 или почему.