Eu tenho lutado com esse problema há vários anos. Periodicamente, consigo fazê-lo funcionar, mas, um ano depois, há uma mudança no servidor e tenho que lutar novamente para que ele funcione no novo servidor.
Esse tempo chegou novamente ... Depois de lutar para depurar esses problemas do kerberos, voltei ao básico: outras pessoas devem ter feito o que eu tentei com frequência - o que eles usaram?
Embora existam pessoas usando minha técnica, elas claramente não têm os problemas, eu faço. Mas há uma dúzia de maneiras de resolver a maioria dos problemas, então eu combinei técnicas encontradas em 2 ou 3 exemplos na web e jogo com uma abordagem diferente, que parece ser mais confiável e não mais complicada do que a anterior, e crucialmente envolveu o infame kerberos 'double-hop':
Sub Authuser()
'Swap out values enclosed in []
If Session("UID") = "" or 1 then
Dim rsUser, aUserID, aGroups, i
Dim connAD, sBase, sFilter, sAttributes, sScope, sFullCommand, rsADUserInfo, oADSysInfo
aUserID = Split(Request.servervariables("AUTH_USER"),"\")
Set connAD = Server.CreateObject("ADODB.Connection")
connAD.Provider = "ADsDSOObject"
connAD.Properties("User ID") = "[MyDomain]\[MyDomainUser]" ' ### remember to make sure this user has rights to access AD
connAD.Properties("Password") = "[password]"
connAD.Properties("Encrypt Password") = true
connAD.Open
sBase = "<LDAP://DC=[MyDomain], DC=[MyDomainExt]>"
sFilter = "(sAMAccountName=" & aUserID(1) & ")"
sAttributes = "cn, mail, company, givenName, sn, ADsPath, name, sAMAccountName, telephoneNumber, memberof"
sScope = "subtree"
sFullCommand = sBase & ";" & sFilter & ";" & sAttributes & ";" & sScope
set rsUser = Server.CreateObject("ADODB.Recordset")
set rsUser = connAD.Execute(sFullCommand)
If not rsUser.EOF then
Session("UID") = aUserID(1)
Session("Name") = rsUser("cn")
Session("Email") = rsUser("mail")
If IsArray(rsUser.Fields(9)) Then
aGroups = rsUser.Fields(9)
For i = LBound(aGroups) To UBound(aGroups)
If InStr(1, aGroups(i), "[MyUsersGroup]", 1) Then
Session("Auth") = 1
End If
If InStr(1, aGroups(i), "[MyAdminGroup]", 1) Then
Session("Admin") = 1
End If
Next
Else
Response.Write "No groups<BR>"
Session("Auth") = 1
Session("Admin") = 1
End If
Else
Response.Write "User not recognised in AD<br>"
End if
connAD.Close
set rsUser = Nothing
Set connAD = Nothing
End If
End Sub