Учетные данные пароля владельца ресурса OAuth2 с регистрацией динамического клиента - PullRequest
0 голосов
/ 11 февраля 2019

Я ввожу логин в новом собственном приложении (iOS и Android) и решаю, какой тип аутентификации принять.В отношении OAuth есть несколько довольно четких указаний, согласно которым это должно быть сделано с использованием внешнего агента (браузера), и это приводит меня к предоставлению кода авторизации с PKCE

https://tools.ietf.org/html/rfc8252

Реализация здесь:https://appauth.io/

Однако мои дизайнеры и владельцы продуктов настроены скептически.Они не очень видят такой тип входа (им не нравится адресная строка) и хотят изучить опцию «Учетные данные для пароля владельца ресурса».По сути прямой логин.Их аргумент в том, что это просто и знакомо.

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

https://tools.ietf.org/html/rfc6749#section-10.1

АвторизацияСервер НЕ ДОЛЖЕН выдавать клиентские пароли или другие
клиентские учетные данные для собственного приложения или клиентских приложений
на основе агента пользователя с целью аутентификации клиента. Сервер авторизации
МОЖЕТ выдать пароль клиента или другие учетные данные для конкретной установки нативного клиента приложения на определенное устройство
.

Это резервное копированиедокументация AppAuth здесь:

https://github.com/openid/AppAuth-Android#dynamic-client-registration

https://tools.ietf.org/html/rfc7591

Правильно ли я интерпретирую это?Я рассматриваю начальную регистрацию пользователя в приложении, которое возвращает токен доступа, который можно использовать для динамического создания клиента (с секретом), который можно использовать для входа в систему с использованием ROPC.

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

Кажется, это немного «рука скатилась», поэтому я нервничаю.Прав ли я быть таким?

...