2012-06-16 3 views
0

저는 WCF가 새롭고 WCF Rest 서비스를 어떻게 보호 할 수 있는지 알고 싶습니다. asp.net 웹 사이트에서 등록 된 사용자 만 액세스 할 수 있습니다. 응용 프로그램이 동일한 IIS 서버에서 호스팅되는 서비스를 사용합니다. 내 질문은이 등록 된 사용자 만이 서비스를 사용할 수 있도록이 서비스의 사용을 어떻게 제한 할 수 있습니까? , 서비스가 많은 클라이언트 (안드로이드, 아이폰, ...)에 의해 사용될 수 있다는 것을 알고있다. 어떤 유형의 인증을 사용할 수 있습니까? 서비스를 테스트하기 위해 winform을 만들고 HttpWebRequest를 사용합니다. 추신 : https를 사용할 수 없습니다. 감사합니다.WCF를 보호하는 방법 사용자 이름과 암호로 서비스를 시작 하시겠습니까?

답변

0

가장 간단한 방법은 asp.net 호환 모드를 사용하는 것입니다. WCF 서비스 호출은 ASP.NET 인증 및 세션 쿠키 확인을 포함하여 ASP.NET 페이지에 사용 된 것과 동일한 사전 처리를 발생시킵니다. httpcontext.current.user.identity.isauthenticated를 포함하여 HttpContext를 확인할 수도 있습니다. 사용자가 인증되지 않은 경우 예외를 throw하거나 오류 코드를 반환합니다. 다음은 추가 정보입니다 : http://msdn.microsoft.com/en-us/library/aa702682.aspx.

응용 프로그램에 이미 양식 인증을 사용하고 있고 사용자가 응용 프로그램에 로그인 한 후에 서비스를 호출해야하는 경우 사용자가 설정됩니다.

인증 서비스를 만들 수도 있습니다. 이 서비스는 클라이언트가 사용자 이름/암호를 보낼 수있게하고 ASP.NET 인증을 사용하여 사용자를 인증합니다. 인증 쿠키를 다시 보내면 위와 같이 향후 서비스 호출을 확인할 수 있습니다. http://msdn.microsoft.com/en-us/library/bb386582.aspx을 참조하십시오.

저는 인증 서비스가 json을 사용하여 호출 될 수 있다고 생각합니다. How to Call .NET AuthenticationService from json client without ASP.NET을 참조하십시오.

+0

신속한 답변을 주셔서 감사합니다.하지만 휴식 서비스에 관해 이야기 할 때 모든 것이 URL을 통해 이루어져야한다고 생각합니까? 아마 클라이언트가 쿠키와 상호 작용할 수 없다고 생각합니다. –

+0

많은 사람들이 당신에게 동의 할 것입니다. 그러나 서비스 호출 권한이 필요하다는 것은 서버에 토큰을 전달해야한다는 것을 의미합니다. 이와 같은 인증 데이터는 서비스에 대한 메타 정보이므로 쿠키는 서비스 인터페이스를 어지럽히 지 않고이 정보를 서버에 전달하는 좋은 방법입니다. 나는 다른 사람들이 내게 진심으로 동의하지 않을 것이라고 확신하지만 나는 그것이 좋은 타협이라고 생각한다. – Japple

+0

대단히 감사합니다. @Japple, 귀하의 답변이 많은 도움이되었으므로 고객 쿠키 또는 OAuth (또는 이와 비슷한) 구현을 제안 할 것입니다. –