2011-10-10 5 views
3

servicestack.net 라이브러리를 사용하여 웹 서비스를 개발 중입니다.ServiceStack.Net을 사용하여 클라이언트 인증을 구현하는 방법

내 시나리오에서는 웹 서비스가 WPF 응용 프로그램에서 호출됩니다. 승인 된 클라이언트 앱만 내 서비스를 호출 할 수있는 인증 기능이 필요합니다.

클라이언트 응용 프로그램에서 "사용자 이름"과 "암호"를 하드 코딩하는 것만 큼 간단합니까? 이것은 확실히 적절한 접근법처럼 보이지 않습니다. 더 좋은 방법이 있습니까?

편집 또한, 클라이언트 측에서, 사용자는 자신이 사용자 이름/비밀번호로 로그인 할 수 있으며 서비스에 요청을 시작 (이 아무것도 영향을 미친다 있는지 확실하지 않습니다, 그래서 나는 그것을 언급 것이라고 생각)

답변

5

ServiceStack see this question의 인증에 대한 배경 정보를 확인하십시오.

일반적으로 사용자가 추가로 수행하는 것으로 보이는 클라이언트가 아닌 사용자를 인증합니다. 그러나 특정 클라이언트 집합을 통해서만 액세스 할 수 있도록 서비스를 잠그려고한다면 클라이언트와 서버에 PKI를 사용해야합니다.

기본적으로 클라이언트는 로그인시 앱의 개인 키와 함께 사용자 : 비밀번호의 암호화 된 버전을 사용하여 추가 토큰을 보냅니다. 서버에 클라이언트 공개 키가 있으므로 로그인시 추가 유효성 검사 단계를 수행하여 사용자의 암호화를 해제합니다. 토큰을 전달하고 유효성이 검사 된 사용자 자격 증명과 비교합니다.

PKI 솔루션이 너무 무거 우면 암호화를 사용하지 않고 대체 전략으로 클라이언트가 비밀 GUID를 제공 할 수 있습니다.이 GUID는 로그인 할 때 GUid의 MD5 해시 버전과 현재 시간을 전송합니다. unhashed 버전의 시간. 시간이 지정된 임계 값 내에 있고 MD5 해시가 유효한 경우 인증 된 클라이언트를 사용합니다.

+0

감사합니다. 당분간, 해시 된 guid의 라인을 따라 무언가가 충분할 것이라고 생각합니다. Love ServiceStack btw! – stephen776