跳到内容
产品信息
作者的头像

SAP HANA云集成(SAP HCI)中的LDAP适配器

SAP HANA云集成是SAP的战略互联解决方案。如果您正在寻找对基于LDAP的系统的集成支持,这个博客肯定会吸引您。从2016年11月开始,SAP HANA Cloud Integration客户可以使用LDAP适配器。该适配器帮助您实现涉及LDAP服务(例如MS Active Directory)的集成场景。

需要使用SAP HANA Cloud Connector通过LDAP适配器连接LDAP服务。

LDAP适配器支持插入修改操作。使用插入操作,您可以在LDAP服务中创建新的条目。您可以使用Modify操作来编辑LDAP服务中的现有条目。您一次只能对一个记录执行这些操作;也就是说,在一个消息处理周期中,你只能更新或修改一条记录。如果希望对多个条目执行操作,则需要使用Splitter步骤将消息拆分为单个记录,然后将它们传递给LDAP适配器。

记住:LDAP适配器的输入不应该包含用于对多个记录执行操作的输入。

关于建立LDAP服务连接的重要说明

您总是通过SAP HANA Cloud Connector (SCC)连接到LDAP服务。您可以看到关于SAP HANA云连接器的更多信息在这里.您需要安装和配置SCC的2.9或更高版本,以便使用LDAP适配器集成到LDAP服务。

LDAP适配器支持的输入类型

LDAP适配器允许您提供两种格式的输入:

  1. XML.
  2. Java (JNDI)属性。

支持不同输入类型背后的思想是允许您根据负载或输入的类型灵活地建模场景。

配置LDAP适配器

这里有一个例子处理设置LDAP适配器。

地址Field,你提供虚拟主机已在SAP HANA云连接器中配置。有关更多信息,请参见在这里.的代理类型身份验证字段会自动填充在前提下简单的值分别。提供凭据名称您在HCI租户上部署凭据时使用的。

手术字段中,选择修改或者插入根据要执行的操作。您可以以XML或Java(JNDI)属性的形式提供操作。

使用映射处理XML输入消息

如果要将XML输入传递给LDAP适配器,则需要考虑LDAP适配器可以识别特定格式的消息这一事实。换句话说,您的输入应该遵循LDAP适配器可以识别的模式。

在这种情况下,您可以使用映射步骤来根据LDAP架构转换输入XML消息。以下是使用映射步骤时典型的方案看起来像。

在这个示例场景中,输入消息是从一个SuccessFactors系统获取的。此消息在映射步骤中用作源,目标是LDAP适配器可以理解的LDAP模式。

下面是一个LDAP模式的例子,你可以在映射步骤中使用它作为目标:

<?xml version = " 1.0 " encoding = " utf - 8 " ?>                     

这里您将遇到的下一个明显的问题是,如果模式不包含您想要的字段,该如何处理。解决方案非常简单。您只需将所需的字段添加到上述模式,然后继续进行映射。

在映射步骤中使用模式之前,在元素的元素下添加一个或多个额外的字段是非常重要的。

例如,让我们假设您想要添加字段telephoneNumber.如上所述,您将该字段添加到元素的标记下的模式。的修改后的模式如下所示telephoneNumber场补充道:

<?xml version = " 1.0 " encoding = " utf - 8 " ?>                      

现在我们已经有了一个用于映射的模式,也知道了如何修改模式以满足您的需求,下一步将是在映射步骤中将这个模式添加为目标,并将源映射到目标。下面是一个典型的映射定义文件的样子:

DistinguishedName或者DN应该使用映射表达式构造如下图所示:

操作字段并将它们添加到映射后的消息中

考虑在将消息映射到LDAP架构之后,在您希望将字段添加到邮件的情况。例如,您想将密码添加到消息中。但是,出于安全原因,您无法以纯文本添加。您希望对密码进行编码,然后将其添加到消息中。在这种情况下,在这种情况下的典型积分流将涉及映射步骤后的脚本步骤。脚本将在将密码值添加到将发送到LDAP适配器的消息之前进行编码。以下是集成流程的样子:

下面是一个你可以用来编码密码的脚本示例:

进口com.sap.gateway.ip.core.customdev.util.Message;进口java.util.HashMap;进口javax.xml.bind.DatatypeConverter;进口javax.naming.directory.Attribute;进口javax.naming.directory.Attributes;进口javax.naming.directory.BasicAttribute;进口javax.naming.directory.BasicAttributes;def Message processData(Message Message) {attribute = new BasicAttributes();String quotedPassword = '"'+"密码"+'" "';byte[] unicodePasswordByteArray = quotedPassword.getBytes("UTF-16LE"); attributes.put(new BasicAttribute("unicodePwd", unicodePasswordByteArray)); message.setHeader("SAP_LDAPAttributes",attributes); return message; }

使用Java(JNDI)属性输入

LDAP适配器允许您以Java属性的形式提供输入。在这些方案中,您可以使用脚本步骤,其中定义将在运行时读取属性值的脚本。然后将这些值内置为发送到LDAP适配器的消息中。您可以在运行时定义这些属性的值,然后在LDAP服务上传递并执行操作。

以下是如果您通过Java(JNDI)属性的形式传递输入,则如何将集成流显示如:

下面是可以在脚本步骤中使用的脚本示例。

importClass (com.sap.gateway.ip.core.customdev.util.Message);importClass (java.util.HashMap);importClass (javax.naming.directory.Attribute);importClass (javax.naming.directory.BasicAttribute);importClass (javax.naming.directory.BasicAttributes);importClass (javax.naming.directory.Attributes);函数processData(message) {var body = message. getbody ();var dn = " cn =马库斯,ou =用户,dc = testcompany, dc = com”;var givenNameAttr = new BasicAttribute("givenName", "Jack");var displayNameAttr = new BasicAttribute("displayName", "Reacher"); var telephoneNumberAttr = new BasicAttribute("telephoneNumber", "100-100-100"); var attributes = new BasicAttributes(); attributes.put(givenNameAttr); attributes.put(displayNameAttr); attributes.put(telephoneNumberAttr); var titleAttr =new BasicAttribute("title", "Developer"); attributes.put(titleAttr); snAttr =new BasicAttribute("sn", "Brutus"); attributes.put(snAttr); var resultingMap = new HashMap(); resultingMap.put("dn", dn); resultingMap.put("attributes", attributes); message.setBody(resultingMap); return message; }

LDAP适配器错误日志

如果操作失败,SAP HANA Cloud Integration中的消息处理日志将包含LDAP服务返回的错误。你可以参考这个链接有关错误码的详细信息。

指定的标签

      15评论
      你必须登录评论或回复一篇文章
      作者的个人资料照片前会员
      前成员

      你好,

      很高兴了解HCI中的另一个适配器。

      但是我能知道在哪个用例/情况下这个适配器更有用吗(我知道用户集成可以用LDAP/Active Directory完成)..

      就业务流程而言,successfactors/Ariba/HCP可以使用吗?如果是这样的话,如果你能详细说明或提供用例,那就太好了。

      感谢和问候
      拉杰什

      作者的头像照片Deepak Govardhanrao Deshpande
      迪帕克Govardhanrao Deshpande

      嗨拉杰什,
      回答您的问题“就业务流程而言,关于successfactors/Ariba/HCP,这可以使用吗?”=>是的,可以使用。

      SuccessFactors系统中的新员工招聘和LDAP支持下的新员工(用户)记录插入都是可以使用HCI LDAP适配器的用例之一。博客中已经给出了一个相关的例子来说明这个用例。

      希望它能回答你的问题。

      谢谢
      Deepak.

      作者简介照片Gunnlaugur Th Einarsson
      Gunnlaugur Th Einarsson

      嗨,迪帕克。

      我们一直在尝试通过SCC中的LDAP适配器成功因素<-> AD。

      我们的问题是SCC中的LDAP适配器映射似乎没有得到正确处理。我们的LDAP服务器使用的端口是636,但在日志中,它总是显示端口是389。

      在SCC日志中,它试图使用ip 0.0.0.6连接到内部LDAP。

      对任何帮助表示感谢

      方面,Gunnlaugur

      作者资料照片Sana Faraz
      Sana "

      嗨Gunnlaugur,

      请确保SCC中的映射被正确维护,一个虚拟主机只映射到一个内部主机。确保在集成流中使用此虚拟主机。

      另外,由于您试图连接到安全端口636,请确保在使用的SCC上添加必要的公共证书,并且它应该使用LDAPS协议而不是LDAP。

      问候,

      萨那

      作者的头像Raj Kumar
      拉吉·库马尔

      你好,

      我试图插入一个单一的记录在ldap目录使用以下模式:

      <?xml version = " 1.0 " encoding = " utf - 8 " ?>

      <模式>

      < DistinguishedName > . < / DistinguishedName >

      < >属性

      < cn >…< / cn >

      < sAMAccountName >…< / sAMAccountName >

      ...

      < givenName >…< / givenName >

      < displayName >…< / displayName >

      < / >属性

      > < /模式

      作者的头像Raj Kumar
      拉吉·库马尔

      你好,

      我试图插入一个单一的记录在ldap目录使用以下模式:

      <?xml version = " 1.0 " encoding = " utf - 8 " ?>

      <模式>

      < DistinguishedName > . < / DistinguishedName >

      < >属性

      < cn >…< / cn >

      < sAMAccountName >…< / sAMAccountName >

      ...

      < givenName >…< / givenName >

      < displayName >…< / displayName >

      < / >属性

      > < /模式

      下面是我遇到的例外情况:

      java.lang.IllegalStateException: LDAP Adapter Fails due to: LDAP处理过程中出现Uncategorized异常;嵌套异常是javax. namingexception: Error while trying to resolve reference[根异常是javax. namingexception: exception occurred while trying to resolve object using ObjectFactory search[根异常是com.sap.core.connectivity.api.DestinationException:内部问题,引用类型"com.sap.core.connectivity.api.http。HttpDestination”或“com.sap.core.connectivity.api。DestinationFactory"期望,但对象是:javax.naming.directory.DirContext。请编辑您的web.xml或ejb-jar.xml或注释中的类型。[]],原因:com.sap.core.connectivity.api.DestinationException:内部问题,引用类型"com.sap.core.connectivity.api.http. "。HttpDestination”或“com.sap.core.connectivity.api。DestinationFactory"期望,但对象是:javax.naming.directory.DirContext。请编辑您的web.xml或ejb-jar.xml或注释中的类型。

      如果有人对此有意思,请帮助。

      谢谢,

      拉库马

      作者资料照片Sana Faraz
      Sana "

      嗨rajkumar,

      这个问题可能是由于负载数据的差异造成的。这种情况通常发生在DN值不正确或绝对DN和CN不一致的情况下。

      希望这能解决你的问题。

      问候,

      萨那

      作者资料照片Massimo Nanni
      马西莫Nanni

      您好,我们需要从LDAP服务器加载数据。

      我们看到在适配器中没有查询方法,这对我们来说是一个很大的问题,你们计划添加这个特性吗?

      我们甚至试图从Groovy脚本调用服务器,太糟糕,我们无法介绍如何通过云连接器到达公开的后端系统,因为我们无法获取主机的地址,您可以帮助我们吗?

      作者的个人资料照片斯科特Jahnke
      斯科特·杨克

      你好马西莫Nanni

      您能够创建一个Groovy脚本来完成这个任务吗?

      干杯,斯科特

      作者资料照片Massimo Nanni
      马西莫Nanni

      不,我们尝试了博客文章中的每一个例子,但都没有成功。
      因此,我们在通过HTTP调用的前提上安装了一个Java Server。
      我们在这方面浪费了大量的时间,设置服务器的速度非常快,我们可以在真正的服务器上编写比SCPI接口更好的代码。

      作者的头像照片Sethuraman Tamilarasan
      Sethuraman Tamilarasan

      你好,

      即使我有相同的场景,我需要更新数据从活动目录回到EC,是否有任何可能性如何做到这一点?

      作者的头像
      在克里希纳
      博客作者

      亲爱的Massimo & Sethuraman:

      此特性是路线图的一部分。一旦这个功能可用,我们将保持您的消息。谢谢您的耐心等待。

      最好的问候,在

      作者的个人资料照片emre ozkan
      埃姆雷Ozkan

      在克里希纳

      请告知LDAP连接器中LDAP User Query操作的发布。

      亲切的问候

      埃姆雷

      作者的头像
      在克里希纳
      博客作者

      埃姆雷,

      谢谢你的问题。正如前面提到的,我们将其作为路线图的一部分。我可以带你去找那个官员文档路线图。不幸的是,我不能提供你一个确切的日期,该功能的可用性。

      谢谢和最好的问候,Gautham

      作者的个人资料照片斯科特Jahnke
      斯科特·杨克

      你好在克里希纳

      我回顾了SAP云平台和SAP云平台集成路线图,但我没有在那里看到这个项目。你能提供具体的文件吗?在哪一页?

      谢谢,

      斯科特

      Baidu