Как мы можем интегрировать серверное приложение клиента с собственной пользовательской базой с нашим сервером OAuth? - PullRequest
0 голосов
/ 04 сентября 2018

У нас есть простая настройка: сервер авторизации на основе OAuth 2.0, который в настоящее время поддерживает только тип предоставления client_credentials. Затем у нас есть API, сервер ресурсов, который защищен с помощью запроса токена доступа с нашего сервера OAuth.

До сих пор все варианты использования нашего API представляли собой чисто межмашинное взаимодействие, где просто серверы наших клиентов выполняют пакетные задания.

Сегодня у меня была встреча с новым клиентом. У них есть SPA, который, по-видимому, не имеет своего собственного внутреннего сервера. Он использует AWS для аутентификации и, похоже, возвращает JWT, но, насколько я могу судить, они делают много вызовов API непосредственно для общедоступных сервисов, а затем вся логика выполняется в SPA.

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

Буду очень признателен за любые советы по этому вопросу - большое спасибо заранее за любую помощь.

1 Ответ

0 голосов
/ 04 сентября 2018

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

Ваш рекомендуемый подход - правильный способ сделать это с помощью Client Credentials Grant.

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

Если предыдущий подход не работает, я боюсь, что это единственный способ сделать это. Вам потребуется внедрить прокси-сервер для проверки JWT (вы сможете получить их открытый ключ для проверки подписи). Вы можете сделать это в самом AWS, используя AWS API Gateway + Lambda, чтобы проверить JWT и направить запрос в существующий бэкэнд с помощью Client Credentials Grant, где вам не нужно ничего платить авансом.

...