2011-09-28 4 views
3

모바일 클라이언트 (현재 iOS 클라이언트)에서 사용할 웹 서비스를 개발하려고하고 있는데, RESTful 서비스는 SOAP 서비스보다 훨씬 가볍다는 것을 알게되었다. 이 일에 손을 대고 싶습니다.RESTful WCF 4 서비스에서 모바일 클라이언트에 대한 사용자 인증

대부분의 메서드는 인증이 필요하지만이를 처리하는 방법을 모르겠습니다. REST는 상태 비 저장이되어야한다고 읽으므로 iOS에서 서비스에 액세스하는 사용자의 유효성을 검사 한 다음 그 인증을 사용하여 유효성을 검사 할 수 있습니다 다른 웹 메소드에 대한 연속적인 호출?

참고 : IIS에서 WCF 4's WebHttp을 사용하고 있습니다.

감사합니다.

+1

IIS에서 호스팅 하시겠습니까? –

+1

예, IIS에서 호스팅합니다. –

답변

6

이렇게하기위한 패턴이 상당히 많이 있습니다.

  • 때문에 사용자 이름을 제공하는 것입니다 수행하는 간단한 방법 : 요청 (쿼리 문자열/폼 데이터)의 인증 헤더 또는 일부로서 암호를 입력합니다. 이 경우 각 통화에서 사용자를 인증/승인해야합니다. 아마도 당신에게 이상적은 아니지만 WebHttp를 사용한다면 (이 뜻이 아니라면 WCF Web Api을 심각하게 살펴볼 것입니다), WCF 채널 스택에 HttpModule 또는 뭔가를 만드는 것은 상당히 쉽습니다. 호출을 가로 채어 사용자를 인증합니다.
  • 매우 일반적인 방법은 user : password를 사용하고 API 토큰을 생성하는 끝점을 노출하는 것입니다. 그런 다음 사용자는 해당 API 토큰을 가져와 후속 호출을 인증하는 데 사용합니다. 이 토큰은 약한 암호화 된 데이터에서부터 공유 비밀 키, HTTP 동사, 요청 된 리소스 등으로 구성된 해시에 이르기까지 다양합니다. "HMAC 인증"을 사용하면 여러 가지 예가 있습니다. Azure's authentication schemes은 실제로 세부적인 토큰의 예입니다. 이 접근법에 대한 좋은 점은 인증과 관련하여 하나의 엔드 포인트가 있고 토큰을 작성한다는 것입니다. 다른 엔드 포인트는 해시의 유효성을 검사하거나 토큰을 해독하는 방법을 알아야합니다. 걱정의 좋은 분리.
  • OAuth/OAuth2는 API 소비자가 제 3 자 애플리케이션이 될 것으로 기대하는 경우 사실상 표준입니다.
0

OAuth와 비슷한 전략을 사용하는 것이 좋습니다. 자격 증명의 유효성을 검사하고 액세스 토큰을 배포하고 API에 대한 모든 요청에 ​​대해 유효한 액세스 토큰을 요구하도록 특별히 하나의 서비스를 작성합니다.

IIS에서 호스팅하는 경우 HttpModule을 사용하여 유효한 토큰에 대한 모든 들어오는 요청을 검사하기 전에이 작업을 수행했습니다. 모듈이 없으면 모듈은 401 Unauthorized Http 상태 코드로 요청을 끝냅니다.

편집 :

당신이 작업별로 더 세분화 된 권한을하고 싶으신 경우 사용자 지정 권한 부여 정책을 사용하는 것이 좋습니다 것입니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/ms731181.aspx을 확인하십시오.

관련 문제