2012-06-03 2 views
0

2Way SSL 인증 (클라이언트 측 인증 및 서버 측 인증)에서 작동하는 RESTful API (WCF 사용)를 개발하기 시작했습니다.양방향 SSL 인증 및 요청 권한 부여

클라이언트가 클라이언트 측 인증서에 의해 이미 인증 되었기 때문에 password/username은 필요하지 않습니다.

제 문제는 노출 된 메소드 중 일부는 특정 클라이언트에만 국한되어야한다는 것입니다.

그래서 승인 양식이 필요합니다. 특정 기능의 권한이있는 클라이언트에게 제공 될 비밀 키를 사용하는 방법에 대해 생각했지만이 클라이언트가 이미 인증을 위해 사용할 수있는 클라이언트 측 인증서를 가지고 있다는 것을 깨달았습니다.

프로그래밍 방식으로 현재 사용되는 클라이언트 측 인증서의 이름을 가져온 다음 인증서 이름으로 인증하는 방법이 있습니까? 이 같은

somethine :

string clientCertificate = CertificateAuthority.GetCurrentCertificate; 
if (Authorize(clientCertificate)) 
    doSomething() 

답변

1

X509Certificate2.GetNameInfo Method 가장 눈에 띄는 이러한 방법이있다 예.

그러나, 나는 당신이 당신에게 훨씬 더 단순화 된 코드 아키텍처를 줄 것이다 Claims-Based Identity을 살펴한다고 생각합니다 (BTW, Dominick Baier은위한 훌륭한 fluent API extension있다).

+0

내가 찾던 정확한 방법에 감사드립니다. 클레임 기반 아이덴티티에 대해서는 다소 과장된 것처럼 보입니다 ... 나는 더 복잡한 시스템에 대해 생각합니다 ... – Mithir

0

인증서 소유자의 ID는 인증서의 SubjectDN에 있습니다.

나머지 부분 인 인증 부분은 응용 프로그램에 따라 다르며 아키텍처에 따라 다릅니다. 예를 들어 LDAP를 사용하는 경우 해당 사용자의 역할을 조회합니다.