2012-03-08 1 views
4

기존 웹 응용 프로그램에서 Windows ID 기반을 사용하도록 설정하고 있습니다.STS를 설정하지만 웹 응용 프로그램에 양식 인증을 유지하십시오.

내가 기존의 코드를 조금이라도 엉망으로 만들고 싶다면 응용 프로그램에 formauthentication을 사용하는 로그인 페이지를 사용하고 싶습니다. 사용자가 특정 페이지 (예 : im_comming_from_some_other_site.aspx ".

Page_Load(...) 
{ 
    if(verifyAgainstSTS() 
    { 
     FormsAuthentication.SetAuthCookie(<some_STS_Userid), ...) 
     Response.Redirect("default.aspx") 
    } 
    else 
    { 
     Response.Redirect("http://<STS_server_name/<STS_service...etc>") 
    } 
} 

는이 작업을 수행하는 방법 수있는 경우는 아는 사람 있나요 :은 "im_comming_from_some_other_site.aspx"에서

코드는 같은 것입니까? 예제 코드에 대한 링크 (사용 가능한 경우)는 깊이 감사드립니다.

이 (물론 일부 코드가 때 인증이 시간 초과 될 때 수행 할 작업을 결정하기 위해 필요한 것, 어느 지역의 로그인 페이지 또는 고토 STS-로그인 페이지로 이동) 나는이 나쁜 것처럼 보일 수 있습니다 알고

디자인, STS 함께 모든 방법을 가지지 만,이 최대한 빨리 구현해야하며 가능한 한 손길이 원래 사이트로 유지하려면.

답변

2

그것은 나쁜 디자인이 아닙니다. 귀하의 요구 사항이며이를 수행하려고 시도합니다. 우리는 이와 같은 시스템을 구축했으며 로켓 과학이 아닙니다. 유일한 차이점은 동적/형식이 아닌 전역 설정을 통해 정적으로 양식/sam으로 전환한다는 것입니다.

어쨌든 양식 인증을 web.config으로 유지하면 현재 사용자에 대한 인증이 없을 때 양식에서 로그인 페이지로 요청을 리디렉션합니다.

로그인 페이지에는 두 가지 옵션이 있습니다. 하나는 폼 쿠키를 어떻게 든 생성합니다. 다른 옵션에는 WIF의 FederatedPassiveSignIn 컨트롤이 포함됩니다.

사용자가 양식 인증을 수행하면 쿠키가 설정되고 완료됩니다. 사용자가 STS 로그인 컨트롤을 따라 가면 조만간 유효한 SAML 토큰이 반환됩니다. FederatedPassiveSignIn이 자동으로 선택되며 SignedIn 이벤트에서 리디렉션을 처리합니다.

질문에 언급 된 if도 필요하지 않습니다.

내가 기억하는 한 가지주의 사항이 있습니다. 사용자가 STS에 의해 인증되면 WS-Federation 쿠키가 만들어지고 클레임 등을 읽을 수 있습니다. 모두 작동합니다.

그러나 사용자가 양식으로 인증 된 경우 SAM (SessionAuthenticationModule)은 각 요청시 ASP.NET 파이프 라인의 WS-Federation 쿠키로 폼 쿠키를 바꿉니다. SAM은 나중에 파이프 라인에있는 폼 인증 모듈).

SAM은 사용자 역할을 해당 소유권 주장으로 복사하므로 사용자의 context.User.Identity.IsInRole(...)도 올바르게 작동합니다.

그러나 일반 API를 사용하는 대신 양식 쿠키에서 직접 정보를 추출하려고하면 양식에 의해 사용자가 인증 된 경우에도 양식 쿠키가 없다는 것을 알 수 있습니다 (쿠키는 WS-Federation 쿠키로 대체되기 때문에 존재하지 않습니다).

+0

멋진데, 어떻게해야합니까? FederatedPassiveSignIn을 로그인 페이지에 넣거나 ... 아니면? 일부 모듈을 web.config 등에 추가해야합니까? – mortb

+0

글쎄, 둘 다. 당신은'SessionAuthenticationModule'과'FederatedPassiveSignIn'을 필요로합니다. 내 자습서 중 하나를 읽을 수 있습니다 http://netpl.blogspot.com/2011/08/quest-for-customizing-adfs-signing-web.html –

+0

이것은 정말 도움이되었습니다. 다른 사이트와 폼 인증 쿠키를 공유하여 사이트에 이미 "세미"SSO가 있습니다. FederatedPassiveSignin 컨트롤로 SSO를 추가했는데 SSO와 공유 양식 인증 쿠키가 여전히 작동합니다! – mortb

관련 문제