2010-06-15 3 views
3

HTTP 헤더를 사용하는 응용 프로그램간에 토큰이 공유되는 엔터프라이즈 환경에서 Single Sign On 메커니즘을 구현합니다. 이제 통합 테스트를 수행하기 위해 애플리케이션을 작성하여이를 시뮬레이트해야합니다.HTTP 헤더를 통해 한 ASP.NET 응용 프로그램에서 다른 응용 프로그램으로 값 전달

ASP.NET에서 다른 웹 페이지로 리디렉션하고 해당 프로세스에서 사용자 지정 HTTP 헤더를 전달할 수있는 방법이 있습니까?

감사

답변

2

당신은 사이트 A 원하는 값으로 쿠키를 설정도 사용자를 리디렉션 것을 B사이트에 페이지를 작성해야합니다.

입니다.

http://siteb.com/authenticate.aspx?authtoken=15128901428901428904jasklads&returnUrl=http://siteb.com/index.aspx

authenticate.aspx는 쿠키를 설정합니다 다음 모든 요청은 authToken에받을 것입니다.

+0

좋습니다. 좋은 생각입니다. 하지만 나는 쿠키를 사용하는 동안 조금 회의적입니다. 클라이언트 PC가 쿠키를 사용할 수 없게되거나 심지어 해커가 원하는 경우 쿠키를 조작 할 수없는 경우 어떻게됩니까? 게다가 라이브 시스템에 대한 테스트 환경을 시뮬레이트하고 싶습니다. 실제 인증은 HTTP 헤더를 통해 이루어집니다. 프로덕션 환경에서는 CA Inc에서 제공하는 일부 게이트웨이를 사용하는 설치가 있습니다 (정확한 제품 이름을 모르는 경우). –

+0

유일한 옵션은 쿠키를 사용하거나 URL에 저장하는 것입니다. 클라이언트가 사용자 지정 http 헤더를 보내도록 명령 할 수있는 방법은 없습니다. – bleevo

+0

쿠키가 걱정된다면. http://msdn.microsoft.com/en-us/library/aa479314.aspx "해커"는 http 헤더를 쿠키만큼 쉽게 변경할 수 있습니다. – bleevo

0

서버는 리디렉션에 클라이언트에 HTTP 헤더를 보낼 수 있지만 클라이언트가 다른 원격 서버로 다시 보내하지 않을 것입니다.

이 경우 이상적인 솔루션은 쿠키 또는 QueryString 변수를 사용하는 것입니다. 쿠키는 도메인 간 문제로 어려움을 겪을 수 있으며 호스트 이름이 충분히 다른 경우 복잡해집니다.

이러한 접근 방식 중 하나에서 클라이언트 (또는 검은 색 모자)에서 다시 사용자 입력이 정보를 신뢰하여 보안 구멍을 만들지 않도록주의해야합니다.

+0

예 .. 그 서버 측 구현은 제가 붙어 있습니다. 사용자 정의 HTTP 헤더를 다른 도메인에 보내도록 asp.net 애플리케이션을 얻으려면 어떻게해야합니까? 우리가 서버에서 다른 URL로 컨트롤을 리디렉션하는 해결책을 찾고 있는데 Response.Redirect를 사용하고 있을까요 ?? –

+0

예, Response.Redirect 데이터가 암호화 할 수있을만큼 작 으면 암호화 된 값을 QueryString (헤더를 잊어 버림)에 넣습니다. 서버 A에서 서버 B로 키를 공유해야합니다. 컴퓨터 키를 동기화하고이를 사용하여 데이터를 암호화/해독합니다. 그렇게 할 수 없거나 너무 많은 데이터가있는 경우 Guid와 같은 토큰을 QueryString에 배치하십시오. 그런 다음 서버 B가 서버 A를 호출하고 들어오는 요청의 세부 정보를 요청할 수있는 서버간에 백 채널을 사용하십시오. 이러한 유형의 사용자 지정 솔루션은 매우 오류가 발생하기 쉽기 때문에 공격 경로를 생각해보십시오. Windows Identity Foundation을 살펴보십시오. – umbyersw

관련 문제