2010-02-12 2 views
0

저는 Windows Identity Foundation을 사용하기 위해 일부 응용 프로그램을 구성했습니다. 수동 리다이렉션을 사용하여 보안 토큰 서비스에서 보안 토큰을 얻습니다. WIF를 사용하기 전에 존재했던 로그온 웹 사이트에 WIF 코드를 삽입 한 다음 응용 프로그램 내에서 "STS 참조 추가"를 사용하여이 작업을 수행했습니다.SAML 보안 토큰을 소비하는 동일한 응용 프로그램 내에서 SAML 보안 토큰을 생성하려면 어떻게합니까?

그러나 로그온 웹 사이트를 사용하지 않는 응용 프로그램이 하나 있습니다. 사용자가 외부 STS로 리디렉션하지 않고 응용 프로그램 내에서 보안 토큰을 생성하는 것으로 생각합니다.

외부 STS에서받은 보안 토큰에 추가 클레임을 추가하는 데 사용할 수있는 ClaimsAuthenticationManager 클래스를 사용하여이 작업을 성공적으로 수행하지 못했습니다. 그러나 ClaimsAuthenticationManager는이 컨텍스트에서 작동하지 않습니다. ClaimsAuthenticationManager를 세션 당 하나의 시간 (예상되고 원하는 결과) 만 호출하는 대신, 이전 페이지로드시 사용자에게 할당 한 클레임에 대한 서명없이 모든 페이지로드시 호출됩니다.

나는 데이터베이스에서 클레임을 사용자에게 줄 수있는 외부 STS를 만들려고하는데, 위험하다고 본다. 하나의 웹 사이트에 대해 전체적으로 별도의 STS를 만들어야하는 이유가없는 것 같습니다. 내 응용 프로그램 내에서 보안 토큰을 생성하고 싶습니다.

답변

-1

보안 토큰 서비스 클래스는 자신의 응용 프로그램 내에 둘 수 있습니다.

그러나 토큰을 얻기 전에 사용자가 응용 프로그램의 로그인 페이지에 액세스 할 수있게하려면 deny users=?을 web.config의 Authorization 섹션에서 제거해야합니다. 이렇게하면 사용자가 보안 토큰없이 웹 페이지를 조회 할 수 있습니다. 사용자가 로그인하면 해당 페이지로 리디렉션합니다.

이 방법은 편리한 수동 리디렉션 기능을 사용할 수 없다는 단점이 있지만 작동하지 않습니다. 즉, 로그인해야하는 작업을 시도 할 때 수동으로 사용자를 로그인 페이지로 리디렉션해야합니다.

+0

FAQ (http://msdn.microsoft.com/en-us/library) /ee748487.aspx) ClaimsAuthenticationManager는 세션에 관계없이 per-call이므로보고있는 동작을 설명 할 수 있습니다. 신청서에 STS를 포함 시키면 연맹의 목적이 무효화됩니다. 일반 교장이 아닌 IClaimsPrincipal 만 있으면됩니다. 이 경우 정규 양식 인증을 사용하고 양식 인증 토큰을 기반으로 클레임을 다시 채우는 사용자 지정 HttpModule을 사용하는 것이 더 쉬울 수도 있습니다. –

관련 문제