Как разрешить доступ к конфиденциальным данным только с сервера ресурсов? [OAuth OpenID] - PullRequest
0 голосов
/ 30 апреля 2018

Клиент получает действительный токен доступа, я хотел бы знать, могу ли я сделать это с OAuth2 / OpenID:

  • Я не хочу, чтобы "клиент" обращался к конфиденциальной информации пользователя, такой как, например, "contract_ID".
  • Только мой сервер ресурсов мог получить доступ к этой конфиденциальной информации для выполнения некоторых операций.

Многие примеры в Интернете показывают, что запрос / userinfo выполняется "клиентом" для доступа к некоторым пользовательским данным.
Так как же разрешить доступ к / userinfo только с ressourceserver?
Ресурс-сервер имеет "токен доступа" на входе. Как использовать этот access_token для доступа к конфиденциальной информации, не позволяя «клиенту» получить доступ к этой информации?

Я сделал две схемы, чтобы объяснить:

1 Ответ

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

Userinfo endpoint - это услуга, предоставляемая вашим провайдером идентификации (IdP). Это часть спецификации OAuth - http://openid.net/specs/openid-connect-core-1_0.html#UserInfo. Это зависит от конфигурации IdP, что раскрывается в ответе пользователя.

Итак, не выставляйте contract_ID в конечной точке userinfo, а создайте некоторый метод API getcontractid, который будет методом аутентификации / авторизации API и будет получать идентификатор контракта из вашей БД.

...