สอบถามเกี่ยวกับ LDAP โดยเอามาจากบทความใน thaicreate ก็ยังเข้าไม่ได้ ขอความช่วยเหลือด่วนนน
ต้องการเขียน ldap ให้ติดต่อกับ server
Code (C#)
string strCommu;
bool flgLogin = false;
strCommu = ("LDAP://"
+ (initLDAPServer + ("/" + initLDAPPath)));
// DomainAndUsername = (initShortDomainName + ("\\" + txtUser.Text));
DirectoryEntry entry = new DirectoryEntry(strCommu, txtUser.Text, txtPwd.Text);
object obj;
try {
obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
SearchResult result;
string filter = "uid=" + txtUser.Text;
search.Filter = (filter);
search.PropertiesToLoad.Add("cn");
result = search.FindOne();
Response.Write(result);
if ((result == null)) {
flgLogin = false;
strErrMsg = "Please check user/password";
}
else {
flgLogin = true;
}
}
catch (Exception ex) {
flgLogin = false;
strErrMsg = "Please check user/password";
}
if ((flgLogin == true)) {
this.lbDisplay.Text = ("Welcome " + txtUser.Text);
}
else {
this.lbDisplay.Text = strErrMsg;
}
ผมอ้างอิงมาจากบทความในเว็บ thaicreate
ส่วนโค้ดด้านล่างนี้เป็นโค้ด php ที่สามารถใช้งานได้จริง
Code (PHP)
$filter = "uid=" . $userid;
$inforequired = array("employeeType","department","thainame","mail","givenName",
"sn","uid","entrydn","gender","jobdescription","position","faculty","campus","idcode");
$result = ldap_search($ldapserver,$base_dn,$filter,$inforequired);
$info = ldap_get_entries($ldapserver,$result);
ปล. ผมขอข้ามโค้ดช่วง connect ldap ไปนะครับ
คำถามคือพอผมมาเขียนใน c# ทำไมมันถึงยังขึ้น Please check user/password ที่ต้องการคือทำยังไงให้มันไปเจอ user ก่อน
สิ่งที่ทำไปแล้วจากบทความ https://www.thaicreate.com/dotnet/forum/041162.html คือ
1.แก้ ldapserver
2.แก้ ldappath
3.ส่วน shortdomain ผมตัดออกเพราะใน php ไม่ได้ใช้ก็เข้าได้
4.แก้ตรง search.Filter = ("(SAMAccountName=" เป็น search.Filter = "uid="
ผมต้องทำยังไง รบกวนผู้รู้มาแนะนำผมทีTag : .NET, Web (ASP.NET), C#, VS 2017 (.NET 4.x)
ประวัติการแก้ไข 2017-09-06 03:56:15 2017-09-06 03:56:40
Date :
2017-09-06 03:53:40
By :
Twinhat
View :
1410
Reply :
2
ผมใช้ Code นี้แล้วได้ครับ
Code (C#)
bool flgLogin = false;
string strErrMsg = string.Empty;
string userName = this.txtUser.Text;
string passWord = this.txtPwd.Text;
string sIPServer = "xxxxx";
string sDomain = "xxxxx";
string sLdapPath = "";
string strCommu;
strCommu = ("LDAP://" + (sIPServer + ("/" + sLdapPath)));
DirectoryEntry entry = new DirectoryEntry(strCommu);
entry.Username = sDomain + "\\" + userName;
entry.Password = passWord;
object obj;
try
{
obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
SearchResult result;
search.Filter = "(objectclass=user)";
result = search.FindOne();
if ((result == null))
{
flgLogin = false;
strErrMsg = "<br>Please check Username and Password";
}
else
{
}
}
catch (Exception ex)
{
strErrMsg = "Please check Username and Password";
}
Date :
2017-09-06 13:43:49
By :
mr.win
Code (VB.NET)
Dim flgLogin As Boolean = False
Dim strErrMsg As String = String.Empty
Dim userName As String = Me.txtUser.Text
Dim passWord As String = Me.txtPwd.Text
Dim sIPServer As String = "xxxxx"
Dim sDomain As String = "xxxxx"
Dim sLdapPath As String = ""
Dim strCommu As String
strCommu = ("LDAP://" + (sIPServer & Convert.ToString((Convert.ToString("/") & sLdapPath))))
Dim entry As New DirectoryEntry(strCommu)
entry.Username = Convert.ToString(sDomain & Convert.ToString("\")) & userName
entry.Password = passWord
Dim obj As Object
Try
obj = entry.NativeObject
Dim search As New DirectorySearcher(entry)
Dim result As SearchResult
search.Filter = "(objectclass=user)"
result = search.FindOne()
If (result Is Nothing) Then
flgLogin = False
strErrMsg = "<br>Please check Username and Password"
Else
End If
Catch ex As Exception
strErrMsg = "Please check Username and Password"
End Try
Date :
2017-09-06 13:44:28
By :
mr.win
Load balance : Server 01