0

Есть три проходные партии в нашей системе:Контроль доступа на основе требований - как реализовать пользователя «Система»?

  • Frontend
  • Сервис А
  • Service B

плюс у нас есть автономная службы маркеров безопасности, наш провайдер идентификации.

Идентифицированный пользователь взаимодействует с Frontend, он вызывает службу A, которая, в свою очередь, вызывает услугу B. Ток доступа пользователя проходит через этот конвейер, используя «poor's man identity delegation». Служба A и служба B разрешают (или не разрешают) действия пользователя на основе требований в переданном удостоверении. Все счастливы!

Но теперь я столкнулся с ситуацией, когда служба A не имеет контекста пользователя во время работы. Это происходит:

  • при запуске
  • когда Сервис А обрабатывает сообщение от сообщения шины
  • когда срабатывает таймер

В каждом случае служба А требуется обратиться в службу B, чтобы получить какие-то данные, но он получает 401, потому что токен доступа не передан в службу B.

Есть ли какие-либо рекомендации, как справиться с такой ситуацией? Единственная идея, которую я имею в голову сейчас, - зарегистрировать пользователя «System» (возможный пользователь на услугу A, Service B, Service C и т. Д.) В нашем провайдере идентификации, получить токен доступа для этого пользователя и использовать его в случаях, описанных выше. Но я плохо пахну для меня, и я ищу альтернативные идеи.

Любые предложения будут оценены. Спасибо!

ответ

0

Короткий ответ будет: Если у вас нет никого, чтобы действовать как тогда, действуйте как вы.

Даже при использовании «делегирования личных данных человека» Служба аутентификации на STS использует какой-то механизм. В приведенной ссылке используется сертификат. Поэтому реализуйте новый способ получения токена. У вас уже есть метод, который получает токен ActAs, поэтому теперь вам нужно реализовать метод, который будет получать токен пользователя (для службы A).

Ваш STS должен уже знать этого пользователя «системы», потому что он позволяет ему запрашивать токены ActAs. Вам просто нужно назначить некоторые претензии системному пользователю, который определит, что он может делать, даже если он не действует от имени любого пользователя.