Подходит ли Oauth2.0 для сторонних приложений? - PullRequest
1 голос
/ 21 февраля 2020

Я разрабатываю приложение SPA в angular, и у меня много путаницы относительно правильного способа реализации аутентификации и авторизации. Прежде всего, это приложение стороннего производителя, а это значит, что я занимаюсь разработкой как сервера авторизации, так и серверов ресурсов. Пользователи, которые входят в приложение, должны иметь полный доступ к своим ресурсам на платформе. Итак, я делаю это, используя OAuth2.0, и у меня есть пара сомнений относительно домена протокола, а также проблем безопасности.

Первый вопрос: Первое сомнение - если OAuth должен использоваться для авторизации приложений сторонних разработчиков. Насколько я понимаю, это протокол делегирования, используемый для предоставления стороннему приложению контролируемого доступа к ресурсам пользователя на платформе с согласия пользователя. Как это вписывается в контекст стороннего приложения? В этом случае приложение должно получить токен доступа с областью, обеспечивающей полный доступ, верно?

Второй вопрос: Поскольку это одностраничное приложение, я не смог сохранить секрет сторона клиента. Поэтому я предпочитаю использовать предоставление кода авторизации с PKCE, которое представляется подходящим для управления этим сценарием. В этом случае я бы не стал запрашивать токен refre sh, но я бы только извлекал токен доступа и использовал автоматическую проверку для его обновления sh. Я не хочу, чтобы refre sh токен небезопасно хранился в браузере. Этот PKCE действительно безопасен? Секрет генерируется динамически, но злоумышленник может в конечном итоге создать систему, используя тот же идентификатор клиента publi c и правильно управляя PKCE, и, наконец, получить маркер доступа, который, в моем случае, дает полный доступ к ресурсам пользователей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...