Отдельный сервер авторизации и ресурсов для openId Connect + OAuth - PullRequest
0 голосов
/ 29 октября 2018

Я буду использовать OAuth и openId connect. Мое приложение будет иметь отдельный сервер авторизации и сервер ресурсов. Я хочу реализовать POC. У меня есть несколько вопросов: 1. Как сохранить полученный токен доступа в моем приложении? какой вариант лучше? хранить в БД или сессии / cookie? 2. Как сервер ресурсов будет проверять токен доступа, сгенерированный сервером авторизации? 3. Как реализовать управление сессиями в моем приложении? Я прочитал, что openId connect не имеет состояния, но для проверки токена мне нужно поддерживать сессию, очень запутанный.

Я много читал, но не смог найти этот сценарий, где сервер авторизации и ресурсы разделены.

1 Ответ

0 голосов
/ 30 октября 2018
  1. Жетоны доступа обычно недолговечны. Это сделано в целях безопасности, чтобы избежать атак MITM. Поэтому, по моему мнению, если вы по какой-то причине не используете долгоживущие токены (в этом случае лучше использовать базу данных), лучшим вариантом будет сохранение токена доступа в сеансе сервера или в файлах cookie.
  2. Есть два основных способа сделать это. Либо вы вызываете конечную точку самоанализа сервера авторизации (IdP) с токеном доступа через сервер ресурсов, либо вы можете проверить токен на самом сервере ресурсов с помощью библиотеки (nimbusds, auth0) с помощью проверка подписи токена и утверждений . Рекомендуется второй вариант, потому что если есть несколько ресурсов, пытающихся проверить токены с помощью самоанализа, накладные расходы будут слишком высокими. Кроме того, некоторые IdP не допускают интроспекции через токены-носители, что может быть проблематично в случае общедоступного клиента (нет секрета клиента для использования в учетных данных клиента).
  3. Полагаю, это зависит от того, как работает ваше приложение. Если вы используете что-то вроде servltes, вы можете хранить токены в сеансе сервера или в cookie-файлах через клиентское приложение. Когда токены отправляются на сервер ресурсов, они должны отправляться в заголовке запроса в параметре Authorization. Не совсем уверен в этом.

Надеюсь, это поможет. Приветствия.

...