跳到主要內容

Rainbow Portal 2.0 NTLM 網域整合Hack (續)

照著Rainbow Portal 2.0 NTLM 網域整合Hack修改後,遇到要利用AD群組時,找不到舊版選擇Windows 群組的選項。

在MSDN上ADSI的範例,.Net 1.1和.Net 2.0/3.5也略有不同,而我測試結果是.Net 2.0版本才可正常運行。我自己的情況是在Projects\Rainbow.Framework.Core\Helpers\ADHelper.cs裏的 public static string[] GetUserGroups(string UserAccount) 沒有傳回group資料,因此這裏利用MSDN的範例寫一個簡易版,若能正確執行就不必自己改。public static ArrayList getUserGroups(string userid) // userid是去掉DOMAIN的user account
{
string path = Config.ADdns;
ArrayList ret = new ArrayList();
ret.Add("Authenticated Users");
ret.Add("All Users");
DirectoryEntry entry =
new System.DirectoryServices.DirectoryEntry(path);
System.DirectoryServices.DirectorySearcher mySearcher = new
System.DirectoryServices.DirectorySearcher(entry);
mySearcher.Filter = "(anr=" + userid + ")";
try {
foreach (System.DirectoryServices.SearchResult result in
mySearcher.FindAll()) {
DirectoryEntry oUser;
oUser = new DirectoryEntry(result.GetDirectoryEntry().Path);
object groups = oUser.Invoke("Groups");
foreach (object group in (IEnumerable)groups) {
DirectoryEntry groupEntry = new DirectoryEntry(group);
ret.Add(groupEntry.Name.Substring(groupEntry.Name.LastIndexOf("CN=") + 3));
} } }
catch (Exception) { }
return ret;
}
再修改Projects\Rainbow.Framework.Core\Security\Security.cs的 public static bool IsInRole(string role) ,令其正確判斷user是否為正確的群組。由於找不到AD群組,因此改成在SQL找到同名的Role時一樣有效,這樣也是另類的整合認證。

改到這裏已經可以利用AD控制授權,接下來就得想辦法把舊版的Rainbow Portal升級。

Update: VB超人提供VB6.0列舉AD群組的方法,請看

留言

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

用ZedGraph畫統計圖

Update: 沒想到這篇居然變成Google搜尋ZedGraph第一篇中文網頁,不過還是誠心建議用Windows上的C#先看一下 免費的圖表元件:Microsoft Chart Controls ,除非你非得用.Net 2.0(Windows 2000)或是用 Mono 。 BTW,我並不想成為微軟MVP,所以本Blog並不是有問必答的喲^_^ 才剛貼完上一篇,馬上就有位朋友丟過來一個LGPL Open Source元件的網址: ZedGraph 。 參考: A flexible charting library for .NET

Ubuntu 安裝 Dlink DWA-182 802.11ac USB Wireless driver

買了一張D-Link的 DWA-182無線網卡 ,想要拿到Linux來用。