2011-06-15 3 views
3

IIS의 asp.net 응용 프로그램에서 호스팅되는 몇 가지 WCF 서비스가 있습니다. 우리는 내부 통신 (클라이언트가 동일한 서버 또는 다른 서버에 위치 할 수있는 자체 시스템 간)에 점점 더 많은 서비스를 사용하고 있습니다. 이제 우리는 이러한 수단을 통해 어떤 서비스를 확보해야합니다.내부 WCF 서비스에 대한 액세스 제한

간단히 말해서 : 목적은 다른 사람들이 우리 서비스를 호출하는 것을 중지하는 것입니다. 우리가 통제하는 응용 프로그램 만이 이러한 서비스와 통신 할 수 있어야합니다.

현재 생각 : 우리는 이미 SSL을 사용할 수 있으며 서버에 대한 공개 인증서가 있습니다. 우리의 현재 계획은 다음을 사용하여 보안을 가능하게하는 것입니다 : clientCredentialType = "UserName"우리가 정의한 사용자 이름/암호 (API 키처럼)를 단순히 검사하는 사용자 정의 유효성 검사기가 있습니다.

질문 1 : 더 좋은 방법이 있습니까? 시나리오는 간단하게 들리 겠지만 몇 가지 분명한 해결책이 누락되었습니다.

질문 # 2 : 이렇게하면 SSL 인증서가 이미 충분하거나 다른 인증서를 만들어야합니까?

일부 컨텍스트 : .net 4, IIS 7, 우리는 서버에 액세스 할 수 있습니다. 클라이언트/서비스는 다른 서버에있을 수 있습니다.

업데이트 1 : 클라이언트가 완전히 다른 네트워크에있을 수 있습니다. 우리는이 서비스를 호출 할 수 있어야하는 다른 곳에서 호스팅되는 다른 시스템을 가지고 있습니다.

답변

3

네트워크/Windows 도메인에 모든 서버/서비스가있는 것으로 알고 있습니다 만, 그렇습니까? 이 경우에는 UserName 인증을 사용하지 않습니다. Windows 보안 및 HTTPS를 사용하십시오.

서비스에 대한 액세스를 제한하려면 내부 서비스에 대한 클라이언트 허용을 실행하는 데 사용되는 Windows 계정을 기반으로하는 몇 가지 옵션이 모두 있습니다. 도메인 그룹이 고객 계정을 할당하고 그 이후 수행 할 수 있습니다

  • 사용자 표준 .NET 역할 기반 보안 PrincipalPermission 또는 PrincipalPermissionAttribute. 이것은 귀하의 서비스에 대한 인증을 하드 코딩해야한다는 단점이 있습니다. 정의 된 창 그룹의 사용자 만이 서비스에 액세스 할 수 있습니다.
  • 이전 접근법은 ASP.NET 역할 공급자와 함께 잘하면 (WCF로 테스트되지 않았지만 ASP.NET으로 크게 작동합니다) 가능할 수 있습니다. 이 경우 사용 권한에 Windows 이외의 사용자 지정 역할을 사용하고 AutorizationStoreRoleProvider (AzMan)을 사용하여 도메인 사용자 또는 도메인 그룹을 사용자 지정 역할에 매핑 할 수 있습니다. 다시 말하지만 적어도 사용자 지정 역할에 대한 사용 권한을 하드 코딩해야합니다.
    How to use Authorization manager with ASP.NET 2.0
    How to use ASP.NET Role provider in WCF
  • 만들기 사용자 정의 ServiceAuthorizationManager 당신이 사용자에게 권한을 부여하는 창 역할에 대한 주장을 사용하는 곳. 이 접근법의 장점은 구성을 통해 권한 관리자를 추가 할 수 있으므로 서비스 코드를 건드릴 필요가 없다는 것입니다.
    How to create custom AuthorizationManager for WCF service
+0

+1 좋은 답변입니다. 불행히도 나는 내 질문에 약간 명확하지 않았다. 일부 클라이언트는 다른 네트워크에있을 수 있습니다. 어쩌면 나는 그것을 "내부적"이라고 부르지 않았지만 나는 더 나은 단어를 찾을 수 없었다. 이 정보로 질문을 업데이트했습니다. –

+0

그런 경우'UserName'이 필요하며 사용자 정의 권한 관리자 또는 역할 공급자와 결합 할 수 있습니다. –

+0

다른 네트워크의 클라이언트도 Windows 계정으로 인증 할 수 있지만 기본 인증을 사용해야합니다. –

관련 문제