Предоставление пароля OAuth 2.0 для SPA - PullRequest
0 голосов
/ 21 мая 2018

Я создаю новое приложение с набором микросервисов и интерфейсом, используя React.У меня есть собственный сервер аутентификации, использующий Oauth.В идеале я хочу, чтобы пользователь входил в систему и регистрировал процесс в приложении React, так как владею как сервером авторизации, так и клиентским приложением.

Я хотел использовать предоставление пароля, но из-за того, что React является одностраничным приложением,Я не могу защитить секрет.Я могу использовать неявное предоставление, но на самом деле не хочу перенаправлять пользователя на другую страницу для входа или регистрации.Это будет нормально для будущей интеграции со сторонними разработчиками, но, поскольку я владею веб-интерфейсом, я хочу сделать его максимально удобным (например, как Facebook).

В качестве альтернативы, могу ли я создать микросервис пользователя (где я могузащитить секрет), который предоставляет API для входа в систему и регистрации, которые затем вызывают службу аутентификации, используя предоставление пароля?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Полагаю, под секретом вы имели в виду секрет клиента?Поскольку React - это javascript, вы не можете защитить клиентский секрет и не хотите использовать неявное предоставление, поэтому хорошим подходом является использование службы / микро-службы в качестве серверной части пользовательского интерфейса.Бэкэнд пользовательского интерфейса может защитить секрет клиента и создать токены, используя ваш сервер OAuth.Затем интерфейс пользователя будет вызывать интерфейс API интерфейса пользователя.Бэкэнд пользовательского интерфейса может использовать password тип предоставления для создания токенов при входе пользователя в систему.

0 голосов
/ 22 мая 2018

Я полагаю, что вы хотите получить " Предоставление пароля для владельца ресурса ".В этом потоке Oauth 2 конечный пользователь (владелец ресурса) предоставляет клиенту свои учетные данные, доверяя клиенту.Клиент использует эти учетные данные для обмена токеном с сервера авторизации.Ваш интерфейс не должен хранить учетные данные.Но, как всегда, для этого потребуется хранить токены.

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

...