소비하는 동일한 응용 프로그램 내에서 SAML 보안 토큰을 어떻게 생성 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/2255103

문제

Windows Identity Foundation을 사용하도록 애플리케이션 중 일부를 구성하고 있습니다. 수동 리디렉션을 사용하여 보안 토큰 서비스에서 보안 토큰을 얻습니다. WIF를 사용하기 전에 존재했던 로그온 웹 사이트에 WIF 코드를 삽입 한 다음 응용 프로그램 내에서 "STS 참조"를 사용하여이를 수행했습니다.

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

나는 외부 STS로부터받은 보안 토큰에 추가 클레임을 추가하는 데 사용할 수있는 ClaimsAuthenticationManager 클래스를 사용하여이를 달성하기 위해 실패했습니다. 그러나 ClaimsAuthenticationManager는 이러한 맥락에서 작동하지 않습니다. ClaimsAuthenticationManager를 호출하는 대신 세션 당 한 번만 (예상 및 원하는 결과), 이전 페이지로드에서 사용자에게 할당 한 클레임의 징후없이 모든 페이지로드를 호출합니다.

나는 사용자에게 데이터베이스의 클레임을 제공 할 외부 ST를 만들려는 것을보고 있지만, 나는 이것을 위험이라고 생각합니다. 단일 웹 사이트에 대해서만 별도의 STS를 만들어야 할 이유가없는 것 같습니다. 응용 프로그램 내에서 보안 토큰을 생성하고 싶습니다.

도움이 되었습니까?

해결책

보안 토큰 서비스 클래스를 자신의 애플리케이션 내에 넣을 수 있습니다.

그러나 사용자가 토큰을 얻기 전에 응용 프로그램에서 로그인 페이지에 액세스하려면 deny users=? ~로부터 Authorization web.config의 섹션. 이를 통해 사용자는 보안 토큰없이 웹 페이지를 칠 수 있습니다. 로그인하면 해당 페이지로 리디렉션하십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top