0

우리의 시스템의 세 가지 통신 당사자가 있습니다클레임 기반 액세스 제어 - 'System'사용자를 구현하는 방법은 무엇입니까?

  • 프런트 엔드
  • 서비스 및 A
  • 서비스 B

플러스 우리는 독립형 보안 토큰 서비스, 우리의 정체성 제공자가 있습니다.

인증 된 사용자는 프론트 엔드와 상호 작용하고 서비스 A를 호출하며 서비스 B는 다시 서비스 B를 호출합니다. 사용자의 액세스 토큰은 "poor's man identity delegation"을 사용하여이 파이프 라인을 통해 전달됩니다. 서비스 A 및 서비스 B는 전달 된 ID의 소유권 주장을 기반으로 사용자의 작업을 인증 (또는 허가하지 않음)합니다. 모두 행복합니다!

하지만 이제는 서비스 A가 작동하는 동안 사용자 컨텍스트가없는 상황이 발생했습니다. 그런 일이 : 시작하는 동안

  • 서비스 A는
  • 때 타이머 화재 서비스 A는 일부 데이터를 얻기 위해 서비스 B를 호출해야하는 각 경우에

, 메시지 버스에서 메시지를 처리 ​​할 때 액세스 토큰이 서비스 B로 전달되지 않았기 때문에 401을 수신합니다.

이러한 상황을 처리하는 모범 사례가 있습니까? 내가 생각하는 유일한 생각은 ID 제공자에 '시스템'사용자 (서비스 A, 서비스 B, 서비스 C 등 가능한 사용자)를 등록하고이 사용자의 액세스 토큰을 얻은 다음 위에서 설명한 경우에 사용하는 것입니다. 그러나 나는 나에게 나쁜 냄새가 난다. 나는 대안을 찾고있다.

의견을 보내 주시면 감사하겠습니다. 고맙습니다!

답변

0

짧은 대답은 다음과 같습니다. 자신으로 행동 할 사람이없는 경우.

"poor man id delegation"을 사용하는 경우에도 서비스 A는 일종의 메커니즘을 사용하여 STS에서 인증합니다. 게시 한 링크에서 인증서가 사용되고 있습니다. 토큰을 얻는 새로운 방법을 구현하십시오. ActAs 토큰을 얻는 메소드가 이미 있으므로 사용자 토큰 (서비스 A)을 얻을 수있는 메소드를 구현해야한다.

STS는 ActAs 토큰을 요청할 수 있으므로이 "시스템"사용자를 이미 알고 있어야합니다. 임의의 사용자를 대신하여 행동하지 않을 때에도 할 수있는 일을 정의하는 시스템 사용자에게 몇 가지 클레임을 할당하면됩니다.