2013-08-06 3 views
1

다양한 영역과 매우 세분화 된 사용 권한이있는 응용 프로그램을 연합하는 중입니다. 여러 영역마다 서버로 다시 통신 할 수있는 연합 WCF 엔드 포인트가 있습니다. 세분화 된 사용 권한으로 인해 모든 사용 권한을 포함하는 단일 토큰은 1MB 이상으로 커질 수 있습니다.발급 된 토큰으로 STS에 인증

요구 사항은 초기 로그인 과정 후에 사용자의 사용자 이름과 암호 자격 증명이 Google 코드베이스에 저장되어서는 안됩니다. 권한을 결합하여 더 작은 집합을 만들 수는 없습니다. 우리는 STS 구현을 위해 Thinktecture.IdentityServer를 사용하고 있습니다.

내 제안 된 솔루션은 STS에서 각 끝점을 자체 영역으로 나누는 것이며 STS는 영역에 대해 지정된 사용 권한 클레임이있는 토큰을 반환합니다. 이 작업을 수행하려면 사용자 이름/암호로 인증 된 인증 영역을 갖고 다른 영역에 대한 인증을위한 자격 증명으로 사용될 수있는 사용자, 임차인 및 하위 그룹 ID가 포함 된 토큰을 반환해야합니다.

영역에 특정한 토큰을 발행하도록 STS를 설정하는 작업이 이미 구현되었습니다. 남은 유일한 요구 사항은 사용자 이름/암호가 코드 기반 내에서 유지되지 않는다는 것입니다.

특정 영역에서 이전에 발급 한 토큰을 제공하여 인증을 허용하도록 STS를 구성 할 수 있습니까? 내가 오지 않은 더 나은 해결책이 있습니까?

답변

1

예, STS B에서 발급 한 토큰을 사용하여 STS A에 인증 할 수 있습니다. STS A는 STS B를 알려진 ID 제공자로 신뢰하도록 구성되어야합니다.

생각대로 STS는 새로운 WSStar ID 공급자를 구성하여이 작업을 수행 할 수 있다고 생각합니다. 한 영역의 STS가 다른 영역 STS를 ID 제공자로 추가하면 해당 영역 + 인증서에서 발행 된 토큰을 받아들이 기 시작해야합니다. WCF를 들어

발행 토큰 채널을 설정하는 합리적으로 고통 방법은 WIF CreateChannelWithIssuedToken 확장 방법입니다 :

http://msdn.microsoft.com/en-us/library/ee517268.aspx

1메가바이트은 참으로 매우 큰 토큰입니다. 별도의 영역에서 여러 STS로 분할해야하는 다른 좋은 이유가있을 수 있지만 모든 계산을 사전에 수행하지 않고 토큰이 사용되는 신뢰 당사자 측의 정책 또는 사용 권한 저장소를 통해 동적으로 사용 권한을 유도하여 문제를 해결할 수도 있습니다 STS 측의 세분화 된 사용 권한 하지만 특정 응용 프로그램을 알지 못하면서이 사실을 알려주므로 자유롭게 말해달라고하십시오.

+0

나는 이것이 STS A === STS B 일 경우에도 잘 동작 할 것이라고 가정하고 이것을 시도 할 것입니다. 그것이 작동하면 이것을 인정 된 대답으로 표시 할 것입니다. RP에서 권한 저장소를 사용하는 것과 관련하여 데이터 저장소 요구 사항 때문에 현재로서는 실용적이지 않습니다. – psaxton

1

만료 된 토큰을 새로 고치는 것입니다. 우리는 그것을지지하지 않습니다. 또한 그렇게 할 계획이 없습니다.

만료 시간을 사용자에게 적합한 값으로 설정할 수 있습니다. 그런 다음 강제로 다시 로그인하십시오.

1MB 토큰은 좋지 않습니다. 왕복 또는 세션 선호도를 만들어야합니다. 토큰은 가능한 모든 값을 덤프하지 않고 사용자 신원을 설명하기위한 것입니다.

RP가 서비스 호출을 통해 IdP에서 authZ 규칙을로드하지 않는 이유는 무엇입니까?

+0

현재, 인증 영역에서 ~ 12 시간 만료 토큰을 발행 한 다음 인증 영역 토큰을 다른 영역에 대한 인증으로 사용하는 것이 계획입니다. IdP는 auth 영역 토큰을 갱신 할 수 없음을 이해합니다. "RP가 서비스 요청을 통해 IdP에서 authZ 규칙을로드하는 것에 대해"이것은 익숙하지 않은 내용입니다. 자습서 또는 샘플 구현에 대한 링크를 제공해 주시겠습니까? – psaxton

+1

토큰을 통해 authZ 규칙을 전송하는 대신. RP가 검색 할 수있는 웹 서비스를 만듭니다. – leastprivilege

+0

Dominick에서 무엇을 얻는 지 자세히 알아 보려면 발급 된 토큰의 소유권 주장은 이름, 직위, 순위, 부서, 작업중인 프로젝트 등 본인에 대한 속성 집합이어야합니다. 소유권 주장은 사용 권한이 아니며 STS는 토큰을 소비하는 RP를 대신하여 권한 결정을 내리지 마십시오. 권한 결정을 내리기 위해 정책 (규칙 세트)을 통해 주체의 클레임 세트를 실행하는 RP이어야합니다. 이론과 실습 간에는 차이가 있지만 이론적으로는 그러한 주장이 있습니다. –

관련 문제