gpt4 book ai didi

c# - 使用 c# .NET 客户端连接或访问 Okta LDAP 接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:07 25 4
gpt4 key购买 nike

我有一个使用 Okta LDAP 接口(interface)工具的客户端。我们有一个与 AD 连接的 LDAP v3 工具,打开 LDAP 其他支持 LDAP v3 的服务器。

我们希望将 Okta LDAP 接口(interface)集成到我们的工具中,因为它与 LDAPv3 兼容。我们的代码基于 .NET 框架 + C Sharp。

我们在连接 Okta LDAP 接口(interface)时面临一些问题/挑战。

我们目前使用微软提供的微软库System.DirectoryServices。但面临 LDAP 接口(interface)的问题。

对于StartTLS/389

我得到错误:

不愿意执行。 LDAP 错误代码 53

更多:无法建立安全连接。致管理员:此服务需要 TLS。 LDAP

对于 SSL/636

错误:服务器无法运行。

链接:

https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices?view=netframework-4.8

https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.directoryentry?view=netframework-4.8

https://ldapwiki.com/wiki/LDAP_UNWILLING_TO_PERFORM

var oktaLDAPPath = "LDAP://dev-506668.ldap.oktapreview.com:636/ou=users,dc=dev-506668,dc=oktapreview,dc=com";
var un = "uid=*******,dc=dev-506668,dc=oktapreview,dc=com";
var pass = "*******";
var filter = "((objectClass=*))";
try
{
using (var userDirectoryEntry = new DirectoryEntry(oktaLDAPPath, un, pass,AuthenticationTypes.SecureSocketsLayer))
{
using (var directorySearcher = new DirectorySearcher(userDirectoryEntry, filter) { PageSize = 100 })
{
directorySearcher.FindOne();
}
}
}
catch (DirectoryServicesCOMException dex)
{

}
catch (Exception ex)
{

}

谢谢

最佳答案

更新: 所以我为自己做了一些测试。我明白发生了什么。

如果你做 DNS lookup on dev-506668.ldap.oktapreview.com , 它给你一个 CNAME结果到 op1-ldapi-fb96b0a1937080bd.elb.us-east-1.amazonaws.com

浏览器将使用 CNAME 的 IP 地址,但仍会使用您最初提供的主机名发出请求。但是,出于某种原因,在启动 LDAP 连接时,Windows 正在使用 CNAME 来启动连接。

换句话说,Windows 正在将请求更改LDAP://op1-ldapi-fb96b0a1937080bd.elb.us-east-1.amazonaws.com:636 .但是随后它收到了名称为 *.ldap.oktapreview.com 的 SSL 证书,它会 panic ,因为它与用于发出请求的名称不匹配(op1-ldapi- fb96b0a1937080bd.elb.us-east-1.amazonaws.com).

我使用 Wireshark 验证了所有这些,监控端口 636 上的流量。SSL Client Hello 使用 op1-ldapi-fb96b0a1937080bd.elb.us-east-1.amazonaws.com 而不是 dev-506668.ldap.oktapreview.com.

我不知道有什么方法可以让它不那样做。 DirectoryEntry 也无法覆盖它验证 SSL 证书的方式。 LdapConnection确实如此,你可以看到 here ,但使用起来可能会有点困难。我从来没有用过它。 (您可能应该自己做一些验证,而不是像那个例子那样只返回true)。

无论如何,这可能是您可以与 Okta 支持人员分享的内容。


原始答案:

听起来您的计算机不信任服务器上使用的 SSL 证书。为了验证这一点,我使用了 Chrome。您必须像这样启动 Chrome:

chrome.exe --explicitly-allowed-ports=636

然后你可以把这个放在地址栏:

https://dev-506668.ldap.oktapreview.com:636

如果证书不受信任,您将收到一个很大的错误提示。您可以点击“高级”按钮查看 Chrome 给出的不被信任的原因。但是 Chrome 也会让您通过点击地址左侧地址栏中的“不安全”来检查证书,然后点击“证书”。

它可能不被信任的原因有几个:

  1. 您使用的完全限定域名 (dev-506668.ldap.oktapreview.com) 与证书上的不匹配。如果是这种情况,您可能只需更改用于匹配证书的域名即可。
  2. 证书不是由受信任的机构颁发的。它可以是自签名证书。如果是这种情况,那么当您查看证书时,您应该会看到一个“安装证书”按钮,您可以使用它来明确信任该证书。参见 here对于屏幕截图,从第 3 步开始。这将仅适用于当前计算机。

关于c# - 使用 c# .NET 客户端连接或访问 Okta LDAP 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com