用于连接到 Oracle Directory Server 企业版的 C# 脚本

Posted

技术标签:

【中文标题】用于连接到 Oracle Directory Server 企业版的 C# 脚本【英文标题】:C# script to connect to Oracle Directory Server Enterprise Edition 【发布时间】:2014-09-18 15:37:08 【问题描述】:

我尝试使用 C# 脚本连接到 Oracle Directory Server Enterprise Edition 到目前为止,我几乎没有成功。 我收到 未知错误 (0x80005000) 错误消息 有人可以告诉我我做错了什么。我一直在研究网络,大多数在线板说这个错误消息是因为路径中的 LDAP 需要大写字母。 如您所见,我已经做到了,但仍然没有运气。

下面是我的代码

 private static readonly string PATH = "LDAP://LDAPDEV.example.com:389/o=example.com";
 private static readonly string USERNAME = uid=SERVICE_USR,ou=ApplicationIDs,o=example.com";
 private static readonly string PASSWORD = "test1234";  


      string DN = "";

        // connect to determine proper distinguishedname
        DirectoryEntry Entry = new DirectoryEntry(Path, USERNAME, PASSWORD, AuthenticationTypes.None);

        try
        
            // Bind to the native AdsObject to force authentication.
            Object obj = Entry.NativeObject;

            DirectorySearcher Search = new DirectorySearcher(Entry);
            Search.ReferralChasing = ReferralChasingOption.All
        
        catch (Exception ex)
        
            throw new Exception("Error looking up distinguishedname. ", ex);
        
        finally
        
            anonymousEntry.Close();
        

        return DN;
    

string sDomain="LDAPDEV.example.com:389"; 
string sDefaultOU = @"o=example.com"; 
string sServiceUser = @"uid=user,ou=ApplicationIDs,o=example.com"; 
string sServicePassword = "password"; 

try 
 
PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain, sDefaultOU, ontextOptions.SimpleBind, sServiceUser,sServicePassword); 

  
 catch (Exception ex) 
 
          ex.Message; 
 

【问题讨论】:

您的连接字符串看起来有点不对劲,您是否阅读过有关如何使用 C# 和 LDAP 或 `Active Directory 格式化连接字符串的任何文档,这是一个可以用作示例的 *** 帖子***.com/questions/15157746/… 做更多的研究谢谢 感谢您的回复。你读过我的问题吗?您指向我的帖子似乎是指 AD 连接。我正在研究的非 AD 连接怎么样。当我按照说明操作时,我仍然收到错误 DirectoryEntry entry = new DirectoryEntry("LDAP://address/DC=examples,DC=com", "username", "passwd");我收到的错误是“指定了无效的 dn 语法”非常感谢您提供的任何帮助 尝试更改您的代码并使用PrincipalContext,这样会容易得多..***.com/questions/11561689/… 使用 PrincipalContext,我得到一个“对象引用未设置为对象的实例。”下面的错误消息是我的代码我错过了什么吗?字符串 sDomain="LDAPDEV.example.com:389";字符串 sDefaultOU = @"o=example.com"; string sServiceUser = @"uid=user,ou=ApplicationIDs,o=example.com";字符串 sServicePassword = "通过";尝试 PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain, sDefaultOU, ontextOptions.SimpleBind, sServiceUser,sServicePassword); catch (Exception ex) ex.Message, ex); 无法从评论中清楚地阅读该代码,请将其作为对原始问题的修正 【参考方案1】:

您可以使用 PrincipalContext 获取一些信息,查看此工作示例并将值替换为您的域名值。

 // if you are doing this via web application if not you can replace
 // the Request/ServerVariables["LOGON_USER"] 
 // with Environment.UserName; this will return your user name like msmith for example so var userName = Environvironment.UserName; 
 var userName = Request.ServerVariables["LOGON_USER"].Split(new string[] "\\", StringSplitOptions.RemoveEmptyEntries);
 var pc = new PrincipalContext(ContextType.Domain,"yourdomain.com",null, null);
 var userFind = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, userName);

这基本上是您查看电子邮件地址 SamAccountName 等信息所需的全部内容。使用调试器检查 pc 变量和 userFind 变量中可用的所有属性值

【讨论】:

以上是关于用于连接到 Oracle Directory Server 企业版的 C# 脚本的主要内容,如果未能解决你的问题,请参考以下文章

将本地设备连接到 Azure Active Directory 域服务

使用 Active Directory 服务帐户从 .NET 连接到 SQL Server

使用 DataGrip - Active Directory 连接到 Azure 数据库

连接到 LDAPS(Active Directory)时出现 SSLHandshakeException

如何将 VSTS 帐户连接到 Azure Active Directory

从 mulestudio 连接到 oracle-tns