G8Medlem sedan jan. 20011 213 inlägg <script language="vbscript" runat="server">
<!--
'Public Function UserInfo(LoginName)
'Get Domain name from RootDSE object.
Set objRootDSE = GetObject("LDAP://Rootdse")
strDomain = objRootDSE.Get("DefaultNamingContext")
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "Select mail from " _
& " 'LDAP://"&strDomain&"' where userPrincipalName='användarnamnet'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Emailaddress = objRecordSet.Fields("mail").Value
response.write("email: " & objRecordSet.Fields("mail").Value)
objRecordSet.MoveNext
Loop
-->
</script>
<%response.write(Emailaddress)%>
Funkar perfa i en .vbs-fil men inte när jag kör det i en aspsida. Får inte fram nånting...
Vill alltså ha fram emailadressen för den användaren som besöker sidan genom en sökning i LDAP...
Idéer?
//G8
ZaimanMedlem sedan dec. 20014 239 inlägg <%
'Hämta inloggad användare
strUserName = replace(Request.ServerVariables("REMOTE_USER"),"MITTDOMÄNAMN\","")
'Koppla mot Domänen med ldap
Set objRootDSE = GetObject("LDAP://rootDSE")
strRootDSE = objRootDSE.Get("defaultNamingContext")
'Skapa anslutning och öppna den med behörigt konto
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = ("ADsDSOObject")
objConnection.Open "ADs Provider", _
"CN=minadministratör,CN=Users,DC=mindomän,DC=SE", _
"administratörslösenordet"
'Plocka ut användarens uppgifter med hjälp av inlogningsnamn
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://" & strRootDSE & ">;(&(objectCategory=User)" & _
"(samAccountName=" & strUserName & "));distinguishedName,sAMAccountName,name;subtree"
Set objRecordSet = objCommand.Execute
If objRecordset.RecordCount = 0 Then
Response.Write("Ingen användare funnen!<br>")
Response.Flush
Response.End
Else
strDN = objRecordset.Fields("distinguishedName")
Set objectRecordSet = Nothing
objConnection.close
Set objConnection = Nothing
End If
'Ldap fråga om användaren
SQLStmt = "SELECT mobile, name, mail, displayName " & _
"FROM 'LDAP://mindc.domän.se/"& strDN &"' " & _
"WHERE objectClass='*' "
'Skapa anslutning
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "ADSDSOObject"
' Anslutningsuppgifter mot AD
Conn.Open "ADs Provider", _
"CN=MinAdministratör,CN=Users,DC=MINDOMÄN,DC=SE", _
"Mittadministörslösenord"
Set rs = Conn.Execute(SQLStmt)
%>
Så här har jag löst det på min .ASP sida.
Hoppas det fungerar för dig.
G8Medlem sedan jan. 20011 213 inlägg Nope, får permission denied på rad 27 (Set objRecordSet = objCommand.Execute) fastän jag authenticate som admin...
ZaimanMedlem sedan dec. 20014 239 inlägg Har du rätt sökväg till admin?
objConnection.Open "ADs Provider", _
"[B]CN=minadministratör,CN=Users,DC=mindomän,DC=SE[/B]", _
"administratörslösenordet"
Kontrollera att du får ut rätt användare.
'Hämta inloggad användare
strUserName = replace(Request.ServerVariables("REMOTE_USER"),"WINDOWSDOMÄN\","")
Denna gillar jag
Dim str_ldapusrname, str_ldappwd
str_ldapusrname = "DOMAIN\USERNAME"
str_ldappwd = "PASSWORD"
' 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") = str_ldapusrname
conn.Properties("Password") = str_ldappwd
conn.Properties("Encrypt Password") = True
conn.Open "ADProvider"
SQLStmt = "SELECT displayname FROM 'LDAP://DC=DOMAIN,DC=COM' WHERE objectCategory='person' AND objectClass='user' AND sAMAccountname = '"& strstrippeduname &"'"
' return values
Dim rs
Set rs = Conn.Execute(SQLStmt)
Dim str_okname
If RS.EOF or RS.BOF then
str_okname = ""
Else
str_okname = rs.fields.Item(0)
End if
Response.Write(strokname)