2012-10-03 1 views
5

여러 개의 WCF 서비스를 호출하는 asp.net 웹 응용 프로그램이 있습니다. 웹 응용 프로그램은 www.mydomain.com에 있으며 서비스는 services.mydomain.com에 있습니다. 동일한 서버에서 호스팅됩니다.명시 적으로 자격 증명을 설정하지 않고 WCF Windows 인증이 작동하는 방법

<binding name="WindowsSecuredBinding"> 
    <security mode="Transport"> 
    <transport clientCredentialType="Windows" /> 
    </security> 
</binding> 

및 새로운 보안 엔드 포인트를 사용하도록 클라이언트 웹 응용 프로그램을 구성 :

난 그냥 전송 보안 (HTTPS) 및 Windows authenication를 사용하는 서비스에 보안 엔드 포인트 (bassicHttpBindings)을 추가했습니다. Windows 인증을 통과하기 위해 클라이언트 자격 증명을 설정하는 웹 응용 프로그램에 몇 가지 코드를 작성하는 다음 단계를 기대하고있었습니다. 놀랍게도 클라이언트 자격 증명을 설정하지 않고 서비스 호출이 성공하고 있습니다. 웹 응용 프로그램이 실행되고있는 계정을 보내야한다고 가정하고 있지만이를 확인하는 방법을 알지 못합니다. 다른 시나리오에서는 암시적인 기본값이없는 클라이언트 자격 증명을 보았다고 생각했습니다. 어떻게 인증이 성공하고

  1. :

    그래서 나는이 개 질문이? 앱이 실행되는 사용자, 브라우저 사용자의 자격증 명, 자격증 명을 보내지 않습니까?

  2. 어떻게 인증 프로세스를 디버그/로그/추적 할 수 있습니까? 적어도 보안을 확인할 수 있도록 인증되는 사용자 이름을 확인하고 싶습니다. 서버와 클라이언트 측에서 그것을 가지고 현재 구성으로
+0

Windows 인증에서 [Kerberos] (http://support.microsoft.com/kb/217098) IIRC를 사용합니다. 나는 그것이 현재의 신원을 사용한다고 생각하지만, 어떻게 구성 할 수 있는지 또는 모든 작은 세부 사항들이 어떻게 작용하는지 확신 할 수 없다. –

답변

3
  1. 클라이언트는 아래 실행되고있는 creditials을 보내고있다. 자격 증명 유형이 Windows로 설정되어 있기 때문에 도메인에 있거나 Kerberos가 작업 그룹 환경 인 경우 NTLM에있는 경우 보안 협상을 확인하게됩니다. (More information can be found here.)
  2. 인증 프로세스를 디버깅하려면 WCF에 감사 기능이 활성화되어 있어야합니다. Instructions for adding auditing are here.

여기에 감사 MSDN 페이지에서 중요한 부분입니다 :

<behaviors> 
<behavior name="myAuditBehavior"> 
    <serviceSecurityAudit auditLogLocation="Application" 
    suppressAuditFailure="false" 
    serviceAuthorizationAuditLevel="None" 
    messageAuthenticationAuditLevel="SuccessOrFailure" /> 
</behavior> 
</behaviors> 

및 서비스에 동작을 추가 :

<service type="[Your service type here]" behaviorConfiguration="myAuditBehavior"> 

감사는 (모든 권한 활동을 볼 수 있습니다 활성화되면 성공과 실패를 그렇게 구성한다면). 이렇게하면 보안이 원하는 방식으로 설정되었는지 확인할 수 있습니다.

ASP.NET 웹 응용 프로그램 (가장이라고 함)을 사용하는 사용자의 자격 증명을 전달해야하는 경우이 페이지의 "Delagation and Impersonation with WCF"에 msdn 설명서가 있습니다.

+0

우수 답변. 가장을 만져 주셔서 감사합니다. myClientBase.ClientCredentials가 이미 기본적으로 System.Net.CredentialCache.DefaultNetworkCredentials로 설정되었거나 DefaultNetworkCredentials가 다른 것으로 생각하는 것이 맞습니까? 아마 나는 그것을 자체적으로 사용하여 발견 할 것이다. – xr280xr

+0

내 생각 엔 웹 앱이 실행중인 앱 풀 ID의 자격 증명으로 설정되어 있다고 가정합니다 (IIS에서 호스팅한다고 가정).WCF 호출이 상속받는 웹 사이트가 이미 가장을 위해 구성 되었다면 가능합니다 (하지만 의심 스럽습니다). 감사는 확실히 알 수있는 유일한 방법 일 것이지만, 나는 이것이 앱 풀 신원이라고 추측하고있다. –

+0

웹 응용 프로그램 사이트는 로컬 IUSR_ * 계정을 사용하여 익명 액세스를 허용하도록 구성됩니다. 앱 풀 계정과 다른 승인을 위해 해당 계정을 사용하고 있습니다. – xr280xr

관련 문제