2012-08-02 4 views
1

패시브 연합 (ADFS 2.0)을 사용하는 주 웹 사이트가 있습니다 이 웹 사이트에는 jsonp를 사용하여 MVC 웹 API 사이트를 호출하는 javascript가 있습니다.ADFS 2.0 및 jsonp

이 WebAPI를 단일 로그온 (동일한 컴퓨터, 다른 포트)에 참여 시키려고합니다. 그러나 수동 리디렉션은 jsonp를 중단시킵니다. (STS는 브라우저가 렌더링하는 자체 스크립트를 반환하고 응답 스크립트의 실제 URL로 리디렉션되지 않습니다.)

패시브 제휴는 jsonp webapi와 호환됩니까? 그렇지 않은 경우 사용자 이름/암호 자격 증명없이 활성 연합을 어떻게 사용합니까? 즉, webapi를 호출하기 전에 기본 웹 사이트를 통해 사용자가 인증되므로 이미 로그인 한 사실을 webapi에 어떻게 반영합니까?

답변

1

수동 페더레이션 프로토콜은이 시나리오에서 작동하지 않습니다.

웹 API는 전용 웹 사이트에서 사용하고
  • 경우 사용자가 인증 할 때 WIF에 의해 생성되는 쿠키를 공유 할 수 있습니다

    당신은 두 가지 옵션이 있습니다. 이렇게하려면 다른 웹 사이트를 사용하는 경우 WIF 구성에서 <cookieHandler> 섹션을 구성하여 동일한 도메인과 경로를 사용하고 컴퓨터 이름 대신 FQDN을 사용하도록 설정해야 브라우저에서 웹 사이트와 API를 모두 식별합니다. 동일한 도메인.

  • 두 번째 옵션은 인증 중에 생성되는 SAML 토큰을 추출하고 유효성을 검사하도록 웹 API를 구성하는 것입니다. 여기서해야 할 일은 인증에 사용 된 토큰을 저장하는 것입니다 (WIF 구성의 <service> 요소에서 saveBootstrapToken 사용). claimsIdentity.GetBootrapToken() 확장 메소드를 사용하여 가져 와서 JavaScript 호출에 토큰을 첨부하십시오. "Authorization : bearer ... the-token ...."과 같은 HTTP 헤더. 서버 쪽에서 토큰의 유효성을 검사해야합니다 (프로그래밍 방식). 토큰이 너무 크면 헤더 길이로 인해 IIS에서 할당량에 도달 할 수 있습니다.

+0

고마워요! 쿠키 설정이 필요한 것입니다. –