Har aldrig gjort något liknande och undrar om det här går att göra:
Jag har en sida på vårt intranät, jag kan om jag vill plocka fram den här variabeln: request.servervariables("LOGON_user").
Det jag nu vill veta är om den här användaren är med i en specifik grupp som finns lokalt på webbservern och berende på om han/hon är det eller inte så vill jag göra lite olika saker.
nja, det är ju ingen grupp som finns i en databas utan en grupp på datorn, en av grupperna som du hittar under 'computer management - local users and groups'.
okej, jag fastnade direkt. kan någon hjälpa mig med hur den här frågan...:
SQLStmt = "SELECT displayname FROM 'LDAP://DC=DOMAIN,DC=COM' WHERE objectCategory='person' AND objectClass='user' AND
sAMAccountname = '"& strstrippeduname &"'"
...ska se ut om jag vill hämta information från samma dator som asp-sidan köra från. alltså inget AD utan från den webbservern som skriptet körs på.
Ställen där det står ZZZ skall du ändra till dina saker...
Detta script kollar om en användare är medlem i en grupp i AD:t
returnerar ismember = 1 eller null
finns säkert rum för förbättringar... ;)
'remove domain prefix from username
Dim strUsername, isspos, strstrippeduname, inoofc
strUsername = Request.ServerVariables("REMOTE_USER")
isspos = Instr(strUsername, "\")
inoofc = Len(strUsername)
isspos = inoofc - isspos
strstrippeduname = Right(strUsername, isspos)
'connect to ad
Dim conn, SQLStmt
Set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Properties("User ID") = "ZZZ"
conn.Properties("Password") = "ZZZ"
conn.Properties("Encrypt Password") = True
conn.Open "ADProvider"
'SPECIFY GROUP TO SEARCH FOR
Dim
str_group = "ZZZ"
SQLStmt = "SELECT memberof FROM 'LDAP://DC=ZZZ,DC=ZZZ' WHERE objectCategory='person' AND objectClass='user' AND sAMAccountname = '"& strstrippeduname &"'"
'return values
Dim rs1, ismember, str_sstr
Set rs1 = Conn.Execute(SQLStmt)
Do Until RS1.EOF
arrGroups = RS1.Fields("memberOf").Value
If IsNull(arrGroups) Then
ismember = 0
Else
For Each strGroup In arrGroups
str_sstr = Instr(strGroup, str_group)
If str_sstr <> 0 then
ismember = 1
Else
End if
Next
End If
RS1.MoveNext
Loop
Det här fixade grejen, till funktionen skickar jag in Request.ServerVariables("AUTH_USER")
<%
'****************************************************
' Funktion för att ta fram grupptillhörighet
'****************************************************
Function MemberInGroups(strUser)
strUsername = "XXX" 'OBS: MÅSTE VARA LOKAL ADMIN
strPassword = "XXX"
Const ADS_SECURE_AUTHENTICATION = &H1
Set objNet = Server.CreateObject("WScript.Network")
strComputerName = objNet.ComputerName
strUsername = strComputername & "\" & strUsername
Set objWinNT = GetObject("WinNT:")
Set objWebserver = objWinNT.OpenDSObject("WinNT://" & strComputerName, strUsername, strPassword, ADS_SECURE_AUTHENTICATION)
objWebserver.Filter = Array("group")
For Each objGrp In objWebServer
If objGrp.Class = "Group" Then
If objGrp.IsMember("WinNT://" & Replace(strUser, "\", "/")) Then
If MemberInGroups <> "" Then
MemberInGroups = MemberInGroups & "¤¤¤"
End If
MemberInGroups = MemberInGroups & strComputerName & "\" & objGrp.Name
End If
End If
Next
Set objWebserver = Nothing
Set objWinNT = Nothing
Set objNet = Nothing
End Function
%>