2011-05-19 15 views
5

'u kullanmak istediğimde ad her zaman "IIS APPPOOL \ Klasik .NET AppPool" olarak görüntüleniyor Kerberos üzerinden kimlik doğrulamak için aşağıdaki kodu kullanıyorum..NET WindowsAuthentication'ı nasıl kurabilirim - gerçek kullanıcı

IntPtr logonToken = WindowsIdentity.GetCurrent().Token; 
string authenticationType = "WindowsAuthentication"; 
WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken, authenticationType); 

//windowsIdentity.Name == equals "IIS APPPOOL\Classic .NET AppPool" when I want it to be the user 

Bu yalnızca .NET uygulamamı Web Sunucusu'nu çalıştırmayı denediğimde olur. Kodları hata ayıklamak için makinemde yerel olarak çalıştırırsam, bu kullanıcı adımı Name özelliğinde gösterir. Bunu bir web sunucusunda nasıl çalıştıracağınıza dair herhangi bir öneriniz var mı?

cevap

0

Sorununuz, IIS sunucunuz kendi kimliğiniz altında değil, sizinkiyle çalışmaktadır. Bu nedenle, WindowsIdentity.GetCurrent().Token, IIS iş sürecinin kimliğini döndürür. Sen enable impersonation in web.config gerek enter image description here

+0

Teşekkürler. Ancak, siteye isabet eden kişiyi tanıması için nasıl yapabilirim? Ben sadece bir kişi ile ilişkilendirmek istemiyorum, kullanıcının kim olduğuyla ilişkilendirilmelidir. En azından benim nihai hedefim bu. – Eric

+0

O zaman Windows Kimlik Doğrulama sağlayıcısında okumaya ihtiyacınız var: http://msdn.microsoft.com/en-us/library/907hb5w9.aspx Sizin yaklaşımınız kullanıcılar için değil, 'WindowsIdentity.Currect() 'çalışıyor ** süreç ** kimlik – Zruty

4

:

, Windows kimliğini taklit ASP.NET yapılandırmak için

Sen IIS Yöneticisi konsolunu kullanarak (sizinki dahil) farklı bir kimlik altında çalıştırmak için web sitenizi yapılandırabilirsiniz IIS tarafından ASP.NET uygulaması için WindowsIdentity olarak sağlanan, uygulama için Web.config dosyasını düzenleyin ve aşağıdaki örnekte gösterildiği gibi kimlik yapılandırma öğesinin kimliğe bürünme özelliğini true olarak ayarlayın.

<configuration> 
    <system.web> 
    <identity impersonate="true" /> 
    </system.web> 
</configuration> 

sen muhtemelen olarak çalışır web dev sunucusu kullanıyorsanız ayıklama için yerel kod çalıştırdığınızda sizin giriş yapmış debug doğru kullanıcıyı göreceksiniz yüzden kullanıcı,.

+0

Tekrar teşekkürler. Çalışmak için kodumda veya IIS'de değiştirmem gereken başka bir şey var mı? Şimdi kullanıcı şu şekilde görünür: "NT AUTHORITY \ IUSR" – Eric

+0

Hata! Bunu bir süredir yapmadım - eski proje kodumu gözden geçireceğim, başka bir şey fark edip edemeyeceğimi görmek için. MSDN sayfası, [HttpContext.User] (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.user.aspx) 'in değiştiğini söylüyor. – Rup

+0

Tamam. Ne zaman bir şansın olursa olsun, çok takdir edilecek. Teşekkürler! – Eric

İlgili konular