如何重新触发处于AD状态的分配(LDAP存储库)

2020-09-10 09:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我的客户要求设置强制重新配置。 无论选择哪种系统,IDM都应将用户属性和分配信息推送到目标系统。

  1. 我创建了一个自定义任务以使用uProvision函数重新触发各个连接器软件包中提供的ModifyUser和AssignUserMembership任务。我将用户mskey,存储库ID和Auditid传递给函数作为输入
  2. 以上任务正在ABAP,Java系统中按预期方式工作。
  3. 对于AD(Microsoft目录-LDAP),仅修改用户任务可以按预期运行,而assignuser成员身份无法正常运行。

失败时分配用户成员资格任务的错误消息:

错误putNextEntry存储失败!错误:条目不存在
 来自Modify操作的异常:javax.naming.InvalidNameException:!ERROR:条目不存在:[LDAP:错误代码34-0000208F:NameErr:DSID-03100225,问题2006(BAD_NAME),数据8350,最佳匹配项:'!ERROR  :条目不存在']; 剩余名称'!ERROR:条目不存在'

在进一步分析了原因之后,由于我正试图根据用户mskey触发任务而导致分配失败,但是分配是基于AD组进行的(将用户分配给AD组,反之则没有) )

如何在AD和IDM之间实现AD组特权之间的同步。 不想删除特权并将其分配回去。

请让我知道如何为Active Directory实现这一目标。 非常感谢您的帮助。

输入屏幕:

提交请求后,idm将触发自定义任务,并调用以下脚本

代码:以下是用于触发AssignUserMemberShip设置任务的javascript代码。

以下脚本的输入参数是用户MSkey和用户在UI中选择的存储库列表

功能retryForceProvisionUserAssignments(Par){

     var script =" retryForceProvisionUserAssignments ::";
     var debugKey = uGetConstant(" pck.ENABLE_DEBUG");
     var仓库=''+ Par.get(" REPOSITORIES")+''; //进入JS模式
     var mskey = Par.get(" MSKEY");
     var RetryRepositories ="";

     如果(debugKey ==" 1" || debugKey ==" TRUE"){
         uWarning(脚本+"输入存储库:[" +存储库+"]"));
     }

     if(repositories == null || repositories.length <2){
         如果(debugKey ==" 1" || debugKey ==" TRUE"){
             uWarning(脚本+"未找到存储库...静默退出");
         }
         返回"";
     }

     var tempArr = repositories.split('|');

     for(var i = 0; i  = 0){
                         var msg1 =脚本+":mskey =" + mskey +" ExecuteTask =" + executeTask +"。执行uProvision时发生错误。原因:" + OutString;
                         uError(msg1);
                         uSkip(2,2,msg1);
                     }
             }其他{
                 var msg2 =脚本+" executeTask变量为null或为空";
                 uInfo(msg2);
                 uSkip(2,2,msg2);
             }
         }
     }
 }
 

此致

Deva

(67.9 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我的客户要求设置强制重新配置。 无论选择哪种系统,IDM都应将用户属性和分配信息推送到目标系统。

  1. 我创建了一个自定义任务以使用uProvision函数重新触发各个连接器软件包中提供的ModifyUser和AssignUserMembership任务。我将用户mskey,存储库ID和Auditid传递给函数作为输入
  2. 以上任务正在ABAP,Java系统中按预期方式工作。
  3. 对于AD(Microsoft目录-LDAP),仅修改用户任务可以按预期运行,而assignuser成员身份无法正常运行。

失败时分配用户成员资格任务的错误消息:

错误putNextEntry存储失败!错误:条目不存在
 来自Modify操作的异常:javax.naming.InvalidNameException:!ERROR:条目不存在:[LDAP:错误代码34-0000208F:NameErr:DSID-03100225,问题2006(BAD_NAME),数据8350,最佳匹配项:'!ERROR  :条目不存在']; 剩余名称'!ERROR:条目不存在'

在进一步分析了原因之后,由于我正试图根据用户mskey触发任务而导致分配失败,但是分配是基于AD组进行的(将用户分配给AD组,反之则没有) )

如何在AD和IDM之间实现AD组特权之间的同步。 不想删除特权并将其分配回去。

请让我知道如何为Active Directory实现这一目标。 非常感谢您的帮助。

输入屏幕:

提交请求后,idm将触发自定义任务,并调用以下脚本

代码:以下是用于触发AssignUserMemberShip设置任务的javascript代码。

以下脚本的输入参数是用户MSkey和用户在UI中选择的存储库列表

功能retryForceProvisionUserAssignments(Par){

     var script =" retryForceProvisionUserAssignments ::";
     var debugKey = uGetConstant(" pck.ENABLE_DEBUG");
     var仓库=''+ Par.get(" REPOSITORIES")+''; //进入JS模式
     var mskey = Par.get(" MSKEY");
     var RetryRepositories ="";

     如果(debugKey ==" 1" || debugKey ==" TRUE"){
         uWarning(脚本+"输入存储库:[" +存储库+"]"));
     }

     if(repositories == null || repositories.length <2){
         如果(debugKey ==" 1" || debugKey ==" TRUE"){
             uWarning(脚本+"未找到存储库...静默退出");
         }
         返回"";
     }

     var tempArr = repositories.split('|');

     for(var i = 0; i  = 0){
                         var msg1 =脚本+":mskey =" + mskey +" ExecuteTask =" + executeTask +"。执行uProvision时发生错误。原因:" + OutString;
                         uError(msg1);
                         uSkip(2,2,msg1);
                     }
             }其他{
                 var msg2 =脚本+" executeTask变量为null或为空";
                 uInfo(msg2);
                 uSkip(2,2,msg2);
             }
         }
     }
 }
 

此致

Deva

(67.9 kB)
付费偷看设置
发送
5条回答
南山jay
1楼 · 2020-09-10 10:18.采纳回答

Hello Deva,如前所述,AD接口和LDAP的工作方式与ABAP接口的特权分配不同。 STANDARD ABAP连接器(ToSAP)进程" AssignAllABAPPrivileges"获得为SAP IDM中的存储库提供的所有特权。

(仅供参考:*还有另一个ABAP连接器ToSAPIdentity,也只是将增量提供给了ABAP系统)。

这很容易进行您要创建的对帐流程。 标准LDAP/AD连接器(ToLDAP)进程" AssignUserToADSGroup"使用标准成员属性将存储库的增量(仅分配[+]和撤销[-])写入组。

通过触发现有的标准挂钩/插件来保持升级概念的简单方法是,使用LDAP/AD的新部分来增强与我们共享的javascript,您可以在其中确定增量(分配和 帐户/存储库必须撤消),并为每个组触发标准的LDAP/AD挂钩/插件。

还有其他可能性可以满足您客户的要求,但是我喜欢这个, 因为您触发了现有的挂钩/插件(接口),它们也在正常的身份/帐户生命周期中触发。 如果这些挂钩/插件(接口)有任何更改,这些更改也会在您的对帐过程中生效。

最好的问候,

Christoph Reckers

SAP小菜
2楼-- · 2020-09-10 10:18

Steffi Warnecke -嗨,Steffi,如上所述,我曾尝试更新用户,但遇到错误

属性值

dn dnvalue

更改类型修改

+成员组dn

甚至尝试使用memberOf属性

putNextEntry无法存储cn = xyz,OU = Users,OU = IDM,DC = txyz,DC = local

修改操作中的异常:javax.naming.directory.SchemaViolationException:

[ LDAP:错误代码65-0000207D:UpdErr:DSID-0315166D,问题6002(OBJ_CLASS_VIOLATION),数据31]; 其余名称'cn = xyz,OU =用户,OU = IDM,DC = txyz,DC =本地'

四川大学会员
3楼-- · 2020-09-10 10:38

您好

您能在两个脚本sap_core_getGroupACCOUNTFromPrivilege和sap_core_checkAccountAttributeValueExists两个脚本的末尾添加uWarning并发布值吗?

huskylover
4楼-- · 2020-09-10 10:25

嘿,Deva,

看起来像不是"成员" 用户帐户的属性。 :/

您是否尝试过以其他方式创建工作?

问候,

Steffi。

# p #
一只江湖小虾
5楼-- · 2020-09-10 10:34

Deva Prakash B

您无法签出配置 引擎程序包,因此即使您愿意,也无法编辑标准SAP脚本(或其中的任何其他标准)。

如果您可以在LDAP连接器(或AD)中找到一个属性(通过该属性将组链接到帐户),则只需更改密码的参数即可:用户帐户的专有名称,然后输入 +该属性的名称与该组的DN组合在一起。

我们没有使用此属性,但是我有一个密码,它添加了一个 组使用与标准相同的信息(通过属性"成员")分组到另一个组。 因此,也许"成员"也可以以其他方式工作?

如果您有一个链接了test-ad的测试环境,则可以尝试一下。 :)

致谢,

Steffi。

一周热门 更多>