2012-10-03 47 views
5

Birkaç WCF hizmetine çağrı yapan bir asp.net web uygulamasına sahibim. Web uygulaması www.mydomain.com adresinde bulunur ve hizmetler services.mydomain.com adresindedir. Aynı sunucudan barındırılıyorlar.WCF Windows kimlik doğrulaması, kimlik bilgilerini açıkça ayarlamadan nasıl çalışır

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

ve bu yeni güvenli son noktalarını kullanmak için istemci web uygulaması yapılandırılmış:

Sadece Taşıma güvenliği (https) ve Windows authenication kullanmak hizmetlerine güvenli uç noktaları (bassicHttpBindings) ekledik. Windows kimlik doğrulamasını geçmek için istemci kimlik bilgilerini ayarlamak için web uygulamasında bir kod yazmanın bir sonraki adımını bekliyordum. Sürprizim için, müşteri kimlik bilgilerini ayarlamadan servis çağrıları başarılı oluyor. Web uygulamasının altında çalıştığı hesabı göndermesi gerektiğini ancak bunu nasıl doğrulayacağımı bilmiyorum. Diğer senaryolarda, örtülü bir varsayılan olmayan istemci kimlik bilgilerini gördüğümü düşündüm. Nasıl kimlik başarılı olduğunu

  1. :

    Yani iki sorum var? Uygulamanın altından çalıştırıldığı kullanıcı mı, tarayıcı kullanıcısının kimlik bilgileri, kimlik bilgisi yok mu?

  2. Kimlik doğrulama sürecini nasıl debug/log/trace yapabilirim? En azından kimliği doğrulanan kullanıcı adını görmek istiyorum, böylece güvenliği doğrulayabilirim. Eğer sunucu ve istemci tarafında buna sahip olarak mevcut yapılandırma ile
+0

Pencere kimlik doğrulaması [Kerberos] (http://support.microsoft.com/kb/217098) IIRC kullanır. Mevcut Kimlik'i kullandığını düşünüyorum, ancak nasıl yapılandırılabileceğini veya tüm küçük detayların nasıl çalıştığını bilmiyorum. –

cevap

3
  1. istemci altında çalıştığı creditials gönderiyor. Kimlik bilgisi türü, bir etki alanıdaysanız veya bir çalışma grubu ortamı olması durumunda NTLM'de güvenlik anlaşmasının Kerberos'ta denetlenmesine neden olan Windows'a ayarlandığından. (More information can be found here.)
  2. Kimlik doğrulama işleminde hata ayıklamak için WCF'nin etkinleştirilebilecek bir denetim özelliği vardır. Instructions for adding auditing are here.

Burada denetim MSDN sayfasından önemli parçaları var:

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

ve hizmet davranışı ekleyerek:

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

denetim (tüm yetkilendirme faaliyeti görebilirsiniz etkinleştirildiğinde Bu şekilde yapılandırırsanız başarı ve başarısızlık). Bu, güvenliğinizin istediğiniz şekilde kurulduğunu doğrulamanıza izin vermelidir.

Eğer ASP.NET web uygulamasını kullanarak kullanıcının kimlik bilgilerini geçirmeden işlevselliğini ihtiyacı olur

(bu Impersonation olarak adlandırılır) bu konuda msdn dokümantasyon bu sayfayı " Delagation and Impersonation with WCF" bulunur.

+0

Mükemmel cevap. Ayrıca kimliğe bürünme üzerine dokunduğunuz için teşekkür ederiz. Bu yüzden, myClientBase.ClientCredentials zaten varsayılan olarak, System.Net.CredentialCache.DefaultNetworkCredentials olarak ayarlanmış mı yoksa DefaultNetworkCredentials başka bir şey mi olduğunu düşünerek düzelttim? Belki de kendi hesabımı kullanarak bunu keşfedeceğim. – xr280xr

+0

Benim tahminim, web uygulamanızın çalıştığı uygulama havuzu kimliğinin kimlik bilgilerine ayarlanmış olmasıdır (IIS'de barındırıyor olduğunuzu varsayarak).Web sitesi zaten WCF çağrısının devralması için kimliğe bürünme için yapılandırılmışsa (ancak bundan şüpheliyim) mümkün olabilir. Denetim, kesin olarak bilmenin tek yolu olacak, ama sanırım uygulama havuzu kimliği. –

+0

Web uygulaması sitesi, yerel IUSR_ * hesabını kullanarak anonim erişime izin verecek şekilde yapılandırılmıştır. Bu hesap, uygulama havuzu hesabından farklı bir yetkilendirme için kullanıyor. – xr280xr

İlgili konular