为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕森王 2023-07-09 10:25:38
我有一个使用 Okta LDAP 接口工具的客户端。我们有一个 LDAP v3 工具,可以连接 AD、Open LDAP 其他 LDAP v3 支持的服务器。我们希望将 Okta LDAP 接口集成到我们的工具中,因为它兼容 LDAPv3。我们的代码基于.NET框架+C Sharp。我们在使用 Okta LDAP 接口连接时面临一些问题/挑战。目前我们使用微软提供的System.DirectoryServices by Microsoft库。但面临 LDAP 接口的问题。对于 开始TLS/389我收到错误:不愿意表现。LDAP 错误代码 53更多:无法建立安全连接。致管理员:此服务需要 TLS。LDAP对于 SSL/636错误:服务器无法运行。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)        {        }
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

如果您在 上进行 DNS 查找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为. 但随后它收到具有该名称的 SSL 证书,*.ldap.oktapreview.com并且会出现恐慌,因为该证书与用于发出请求的名称不匹配 ( 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确实如此,但使用它可能会有点困难。我从来没有用过它。(您可能应该自己进行一些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. 该证书不是由受信任的机构颁发的。它可以是自签名证书。如果是这种情况,那么当您查看证书时,您应该会看到一个“安装证书”按钮,您可以使用该按钮来明确信任该证书。


查看完整回答
反对 回复 2023-07-09
?
慕容森

TA贡献1853条经验 获得超18个赞

我最近遇到了这个问题,并指出了以下解决方案:

添加以下注册表值,然后重新启动服务器并查看是否解决了问题。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LDAP\UseHostnameAsAlias DWORD,将值设置为 1。

查看完整回答
反对 回复 2023-07-09
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信