2011-05-10 27 views
3

我目前的應用驗證針對Active Directory使用PrincipalContext類認證針對LDAP默認用戶(在的Web.config專用部分填寫)(更確切地說一個Active Directory):ASP.NET/IIS 7 - 使用主要

ldapContext = new PrincipalContext(AdContextType, AdHost, AdContainer, 
            ContextOptions.SimpleBind, 
            AdDefaultUser, AdDefaultPassword) 

這個認證則可以搜索任何其他用戶(通過UserPrincipal.FindByIdentity(ldapContext, username))。但是我必須改變這種情況,因爲我的客戶端無法接受Web.config中明確的用戶。 OK,我可以理解,:-))

所以我有幾個解決方案:

  • 管理對的Web.config(該membership部分的相應部分進行加密,以providers等)

  • 使用部署應用程序的IIS 7的應用程序池中的帳戶。這意味着從IIS檢索一個Principal(我猜這點不應該太難),然後用它來對AD進行身份驗證;但我發現沒有找到任何方法,既不通過PrincipalContext類,也不通過ActiveDirectoryMembershipProvider之一。

您是否知道如何管理這兩種解決方案中的任何一種,或者您是否認爲有其他解決方案?

非常感謝!

回答

2

我覺得不是用戶名是你的問題,更多的密碼?據我可以告訴第二個解決方案想工作。我不知道要做到這一點。

對於第一種解決方案,您可以加密用戶名和密碼並將加密值存儲在字符串中。加載後,您需要解密字符串。但是,您的解決方案對於反彙編不是安全的。

您還應該考慮一下,如果您需要高安全性的實現,那麼您可以將加密密鑰存儲在安全存儲中。那麼你會避免反彙編。

+0

事實上,問題是密碼:我想沒有辦法從一個委託人(基本安全)獲取密碼。好吧,我會看看加密。 – Emmanuel 2011-05-11 07:17:30

+0

好的,謝謝!加密的一個好方法是通過一個IIS工具,在[這個其他的SO主題]中有詳細描述(http://stackoverflow.com/questions/134658/problem-encrypting-membership-element-in-web-config)。 – Emmanuel 2011-05-11 14:10:16

+0

沒問題。整天! – sra 2011-05-11 14:16:30