Как я могу аутентифицировать пользователя без использования пароля Grant_type в потоке OAuth?

Когда я прочитал, что OAuth 2.0 рекомендует не использоватьpasswordтип гранта, и он будет удален в обновлении OAuth 2.1. Но какое решение является правильным, если у вас есть канал связи между машинами?

В моем случае у меня есть несколько сценариев Powershell, которые получают токен доступа, используемый в последующих вызовах API. Поэтому они запрашивают токен доступа, предоставляя имя пользователя и пароль моего аппликативного пользователя, который имеет свои собственные претензии и, таким образом, получает доступ к ограниченному набору API.

Я мог бы использоватьclient_credentialsвместо этого поток, но тогда я аутентифицирую не реального пакетного пользователя, а только своего клиента. Это может не дать мне тех утверждений, которые я ищу. И в качестве дополнительного вопроса: чем жесткое кодирование идентификатора клиента + секрет отличается от жесткого кодирования пользователя и пароля?

1 ответ

The — правильный вариант для потоков, инициируемых серверной частью, таких как запланированное задание, когда пользователь не участвует.

В качестве альтернативы, если ваши сценарии выполняются администраторами в интерактивном режиме, сценарий может использовать собственный поток кода , который является консольным (собственным) клиентом.Это может привести к возникновению различных претензий в зависимости от пользователя сценария.

Независимо от потока вы все равно можете использовать утверждения. клиентавызывает включение претензий. Выдача претензий не обязательно требует участия пользователя.

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

Некоторые серверы авторизации могут иметь ограничения на выдачу утверждений для потока учетных данных клиента, что означает, что вам, возможно, придется прибегнуть к обходным путям. Однако в самом OAuth 2.0 такого ограничения нет, поэтому я всегда предпочитаю поощрять проекты, основанные на стандартах.

ПОТОК УЧЕТНЫХ ДАННЫХ КЛИЕНТА

Можно использовать один из этих методов для потока учетных данных клиента, который поддерживает несколько вызывающих абонентов, с только одной регистрацией клиента. В зависимости от полученных свойств могут быть предъявлены различные претензии:

  • Учетные данные подтверждения клиента с разными свойствами для каждого вызывающего абонента
  • Учетные данные сертификата клиента с разными свойствами для каждого вызывающего абонента

Однако обычно рекомендуется использовать отдельные клиенты. Это гарантирует, что в случае компрометации учетных данных клиента А вы сможете запретить доступ, не затрагивая клиента Б.

Другие вопросы по тегам