2010-06-23 176 views
0

我正在開發一個Intranet Web應用程序,我正在學習如何將VB掛接到Active Directory中。我們將要執行一些位置特定的權限,並且我的老闆希望(如果可能)將我掛鉤到Active Directory以獲取用戶位置。Intranet與VB.NET的Active Directory身份驗證

我認爲我需要做的就是獲取用戶名,但我不確定最佳方式是什麼。我們是微軟唯一的商店,所以IE和IIS是當天的順序。要訪問內部網,您必須使用我們的域登錄到計算機,這是一個安全級別,但是我需要進行身份驗證並確保該用戶有權進行更改。我想我們要麼在AD信息中有修飾符(如果沒有的話),或者在數據庫中保留權限表,但前者可能是首選。

我知道IIS有一項功能允許/需要身份驗證,但我不確定應該如何工作。

那麼什麼是最好/最簡單/有點(最?)安全的方式來獲取用戶憑據?我總是可以做一個登錄頁面,但如果我能夠在後臺獲得他們的AD憑據,會更好。

謝謝!

回答

2

您需要爲您的IIS站點禁用匿名身份驗證,並啓用windows-auth。

現在去你的web.config並更改以下

<authentication mode="Windows"> 
... 
</authentication> 

看到http://msdn.microsoft.com/en-au/library/532aee0e(v=VS.80).aspx

&

如果neccesary

<identity impersonate="true" /> 

看到http://msdn.microsoft.com/en-us/library/aa292118(VS.71).aspx

現在你應該能夠

HttpContext.Current.User.Identity.Name 

來獲得當前用戶檢查,如果用戶是在一個特定的羣體,你可以使用

HttpContext.Current.User.IsInRole("YourActiveDirectoryGroup") 
+0

我在這篇文章中偶然發現了相同的信息:http://www.tek-tips.com/faqs.cfm?fid=5440 – 2010-06-23 16:21:36

+0

完美!這正是我一直在尋找的。 – 2011-01-25 20:56:37

1

可以將IIS配置爲使用集成身份驗證,這將允許您訪問用戶的samaccountname(Windows 2000之前的登錄)。有了這個,你可以對AD進行LDAP查詢並檢查組成員資格。如果用戶是CanModifyStuffGroup的成員(您已經在AD中創建並添加了用戶),那麼讓他們進行更改,否則給他們只讀版本 - 或者其他什麼。

+0

你將如何從VB.net訪問samacountname ?我google沒有太多的成功... – 2010-06-23 15:54:16

+0

我從一箇舊的ASP.Net應用程序拉VB.Net的以下行我寫道:samaccount = HttpContext.Current.User.Identity.Name 但由於公司的政策圍繞我們維護了自己的權限數據庫,而不是維護AD組。 – 2010-06-23 16:07:54

+0

啊,優秀。謝謝! – 2010-06-23 16:23:19

相關問題