2012-12-20 2 views
0

양식 인증 및 SqlMembershipProvider/SqlProfileProvider/SqlRoleProvider를 사용하는 관련 웹 응용 프로그램에 대한 인증 (사용자 이름/암호 로그온)을 허용하기 위해 클라이언트 응용 프로그램 서비스를 사용하는 WPF 응용 프로그램이 있습니다. 이 모든 작업과 나는 사용자/암호 조합을 신뢰성있게 검증 할 수 있습니다.ASP.NET 클라이언트 응용 프로그램 서비스 인증 및 WCF

또한 WPF 응용 프로그램은 CAS 인증에 사용되는 것과 동일한 웹 응용 프로그램에서 제공하는 여러 WCF 서비스를 호출합니다. 이제는 클라이언트 응용 프로그램 서비스의 인증 세부 정보를 WCF 서비스로 전달하여 해당 서비스 내에서 인증 된 사용자를 식별 할 수있게하려고합니다. 또한 인증이 수행되지 않으면 WCF 서비스가 사용되는 것을 방지 할 수 있어야합니다.

CAS 인증이 .asmx 웹 서비스에 사용되는 곳에서 몇 가지 .NET 3.5 예제가 발견되었거나 ClientBase를 사용하지 않고 인증 기능이 내장 된 WCF Data Services에 대한 인증이 제공되지만 찾을 수 없습니다. 순수한 WCF 예제. 아무도이 시나리오를 가능하게하는 지침으로 나를 가리킬 수 있습니까? 이 프로젝트에 .NET 4.0을 사용하고 있습니다.

나는 또한 this stackoverflow question을 발견했으나 이것은 .asmx 웹 서비스와 WCF가 아닌 대답을 제공합니다.

내가 찍었을 가장 가까운

OperationContextScope 다음은 HttpRequestMessagePropertyClientFormsIdentity 개체에서 쿠키 헤더를 복사하고 현재 OperationContextOutgoingMessageProperties이 추가의 작성을 포함한다. 그런 다음 OperationContextScope의 수명 기간 내에 하나 이상의 서비스 방법을 호출합니다. 문제는 WCF 서비스에 도착했을 때 원래 사용자를 식별 할 수있는 방식으로 인증과 비슷한 내용을 볼 수 없다는 것입니다. 이 방법론은 여러 가지 예에서 사용되었지만 WCF 끝 부분에서 분명히 한 단계 빠져 있습니다.

+0

귀하의 애플리케이션과 서비스간에 인증 쿠키를 공유하고 싶습니다. 그들이 도움이되는지 확인하려면이 두 가지를 확인하십시오. http://stackoverflow.com/questions/1087271/passing-formsauthentication-cookie-to-a-wcf-service http://www.codeproject.com/Articles/190806/Send-Cookies-When-Making-WCF-Service -Calls – Evan

+0

http://stackoverflow.com/questions/1087271/passing-formsauthentication-cookie-to-a-wcf-service 도움이되지 않는 경우 WCF 서비스 내의 breakpont는 HttpContext.Current.User.Identity 개체가 있음을 보여줍니다. 해당 개체의 세부 정보는 비어 있습니다. –

+0

피들러 2를 사용하면 내 쿠키가 요청에 첨부되지 않은 것 같습니다. –

답변

0

발견.

제 바인딩에서 allowCookies = "true"를 지정했습니다.

Wiktor Zychla에 따르면 "BasicHttpBinding에 AllowCookies 속성을 true로 설정하면 자동 쿠키 관리가 켜집니다"- 이는 코드에서 쿠키를 설정하려는 모든 시도가 무시되고 이것이 내가하는 일임을 의미합니다.

1

Microsoft에서 현재 WCF Services에 사용하고있는 웹 API로 전환해야한다고 생각합니다. 체크 아웃 Using Forms Authentication with Web APIhttp://aamirposwal.blogspot.com/2012/05/aspnet-web-api-custom-authorize-and.html

+0

이것은 내가 찾던 해답이 아니지만 흥미로운 아이디어이며 다음에 비슷한 것을해야 할 때 더 조사 할 수도 있습니다. WCF 경로를 이미 통과 한 상태에서 (지금은 내 문제의 해결책을 찾았습니다.) 나는 현 시점에서 크게 바뀌고 싶지 않습니다. 감사. –

관련 문제