FIM如何在SQL MA中重命名锚点

时间:2015-06-18 19:10:33

标签: c# visual-studio-2010 identity-management

我正在进行FIM 2010R2同步引擎项目,我将AD用户导入FIM并将一些信息导出到SQL表。我写了配置代码,它工作正常。

这是我的目标SQL表。

CREATE TABLE [dbo].[tbl_FGPP_Members](
    [MemberObjectGUID] [varbinary](50) NULL,
    [MemberDN] [nvarchar](255) NOT NULL,
    [MemberObjectType] [nvarchar](10) NOT NULL,
    [Member_ADDomain] [nvarchar](16) NULL,
    [Member_sAMAccountName] [nvarchar](64) NULL
) ON [PRIMARY]

在SQL的FIM管理代理上,我已将MemberDN设置为锚点。这意味着我只能通过配置代码向其写入内容,并且无法直接将来自广告用户的尊贵名称直接传递给它。

但是,在广告用户信息出现在SQL中之后,如果该广告用户在广告中重命名或移动,则它的distinguishedName会更改。当我重新导入这些更改时,我希望FIM能够更新MemberDN列。由于我没有这样的流规则(因为它表示MemberDN是只读的),所以当我满足mvobject的以下条件时,我尝试从配置代码中执行以下操作。

    if(sqlFGPPUser.Connectors.Count == 1)
{
 updateFGPPUsersInSQL(mventry, sqlFGPPUser);
}

功能是:

void updateFGPPUsersInSQL(MVEntry mventry, ConnectedMA sqlFGPPUser)
        {
            CSEntry csentry;
            ReferenceValue dn;

            csentry = sqlFGPPUser.Connectors.ByIndex[0];
            dn = sqlFGPPUser.EscapeDNComponent(mventry["ADdistinguishedName"].Value);

            if (mventry["ADdistinguishedName"].Value.ToLower() != csentry.DN.ToString().ToLower())
            {
                try
                {
                    csentry.DN = dn;
                }
                catch (Exception Ex)
                {
                    throw new Exception("Exception Message: Exception encountered while renaming the MemberDN " + Ex.Message.ToString());
                }
            }
        }

基本上我正在做的是检查重命名是否已经发生,否则每次运行同步运行配置文件时每个mvobject都会运行它。

然而,当我运行它时出现错误。对于在广告中重命名/移动的用户,我导入了这些更改,当我运行同步时,我得到:

System.Exception: Exception Message: Exception encountered while renaming the MemberDN attribute MemberDN is read-only
    at Mms_Metaverse.MVExtensionObject.updateFGPPUsersInSQL(MVEntry& mventry, ConnectedMA& sqlFGPPUser) in D:\FIM C# Code\FGPP100\FGPP100\MVExtension\MVExtension.cs:line 526
    at Mms_Metaverse.MVExtensionObject.Microsoft.MetadirectoryServices.IMVSynchronization.Provision(MVEntry mventry) in D:\FIM C# Code\FGPP100\FGPP100\MVExtension\MVExtension.cs:line 566

如何使用更新的AdDistinguishedName更新MemberDN列? :(

谢谢。 GT

0 个答案:

没有答案