Windows Communication Foundation Authentication Service을 찾는 것처럼 들립니다.
편집 : 나는 위의 제안을 철회하고 싶습니다 더 신중하게 질문을 다시 읽기 (그리고 아리엘의 코멘트 후) 후
. WCF 인증 서비스는이 시나리오를 많이 추가하지 않습니다.
WCF와 ASP.NET간에이 작업을 수행하지는 않았지만 폼 인증 된 사용자를 공유하도록 ASP.NET 응용 프로그램을 구성했습니다. 어쩌면 도움이 될 것입니다.
두 응용 프로그램이 폼 인증 쿠키를 같은 방법으로 암호화/암호 해독 할 수 있도록하려면 두 응용 프로그램 모두에 대해 configure the <machineKey>
element이어야합니다 (컴퓨터 또는 응용 프로그램 수준에서이 작업을 수행할지 여부에 따라 web.config 또는 machine.config). validation
, validationKey
, decryption
및 decryptionKey
속성을 확인해야합니다.
두 web.config 파일의 <forms>
요소가 비슷하게 구성되었는지 확인하십시오. 특히 name
, path
및 domain
속성
이것이 단지 웹 브라우저에/전달 된 쿠키에 적용됩니다 (단,이 경우에 유용 할 수있는) 가능성이 높습니다 : 쿠키는 웹 사이트 사이를 통과 할 수 있도록 www.foo.com 및 bar.foo .COM 쿠키를 다른 하나 개의 사이트에서 설정하고 성공적으로 통과 할 수 있도록 다음과 같이 당신이 forms
요소를 구성합니다 :
<forms ... domain=".foo.com" ... />
WCF 서비스에 쿠키를 전달은 까다로운 비트 될 가능성이 높습니다. 나는 매우 매우 I've adapted code from kennyw.com, WCF와 경험이 아니에요 :
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers.Add(HttpRequestHeader.Cookie, "<Forms Authentication Cookie>");
using (OperationContextScope scope = new OperationContextScope(serviceClient.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
serviceClient.MethodName();
}
당신은
을 설정하여 ASP.NET 처리 파이프 라인을 통해 WCF 요청을 전달할 수 있습니다 IIS (그리고 자기 호스팅) 내에서 WCF를 호스팅하는 경우
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" ... />
</system.serviceModel>
당신이 OperationContext.Current.IncomingMessageProperties
에서 수신 메시지의 속성을 사용하여 요청 헤더를 검사하고 폼 인증 쿠키 값을 얻을 FormsAuthentication.Decrypt(string)
를 사용하여 암호를 해독 할 수 호스팅 자신을 경우.
이 중 어떤 것이 작동하는지는 잘 모르겠지만 실제로 작동하는지는 잘 모르겠다.
안녕하세요 아리엘, 어떻게이 일을 시작하셨습니까? 나는 비슷한 문제를 가진 사람을 안다. –