基於ASP Classic,我有一個仍然很強大的遺留應用程序。爲了保護應用程序,我檢查登錄用戶是某個AD組的成員,並且返回一些有用的信息(例如全名,電子郵件地址等)。檢查用戶是給定廣告組(ASP Classic)的成員
這應該是相當常規的,幾年前,我從原來的方法(現在已經忘記)改爲現在的方法。實施起來有點煩瑣,因爲它跨越了許多我知之甚少的技術領域,但我的系統運行良好。
提示幾個服務器稍後移動(每一個都是重新實現系統的戰鬥),而且我不會面對另一個或三個移動。到目前爲止,我正在努力工作。我的代碼,我認爲仍然是健全的,但它是服務器配置是問題。權限,SETSPNs,Kerberos代表團等...
所以問題是,我該怎麼做才能做到這一點,或者,我還可以採取另一種方法。我的目標服務器是同一個AD域內的標準Server 2008和Server 2008 R2盒子。
我的ASP如下:
If Session("UID") = "" then
Dim oWshNetwork, oADSysInfo, oCurrentUser, sUserName, sComputerName
Dim sGroups
Set oWshNetwork = CreateObject("WScript.Network")
Set oADSysInfo = CreateObject("ADSystemInfo")
Set oCurrentUser = GetObject("LDAP://" & oADSysInfo.UserName)
Session("UID") = LCase(oWshNetwork.UserName)
Session("Name") = oCurrentUser.FullName
Session("Computer") = LCase(oWshNetwork.ComputerName)
Select Case VarType(oCurrentUser.MemberOf)
Case 8
sGroups = LCase(oCurrentUser.MemberOf)
Case 8204
sGroups = LCase(Join(oCurrentUser.MemberOf))
End Select
If InStr(1, sGroups, "myApp_Users",1) Then
Session("Auth") = 1
Else
Session("Auth") = 0
End If
If InStr(1, sGroups, "myApp_Admins",1) Then
Session("Admin") = 1
Else
Session("Admin") = 0
End If
Set oWshNetwork = nothing
Set oADSysInfo = nothing
Set oCurrentUser = nothing
End If
我正在與域用戶的身份應用程序池這些應用程序。
此域的用戶已閱讀&對應用程序執行權限。
Kerberos委派爲每個服務器啓用:
Trust the computer for delegation to any service (Kerberos only)
如下我已配置爲域用戶的SPN:
http/myServer
http/myServer.mydomain.net
然而,當我運行應用程序時,我的代碼翻倒在第一個GetObject調用:
error '800704bc'
任何人都可以幫助調試此問題一次或全部,或者如果有的話提供替代品。當然,我很想在.NET中進行重新開發,但這不是一種選擇。
添加了vbscript標籤,如果您需要面向AD的腳本代碼的幫助,VBScript是標籤。 – AnthonyWJones