FIM断开取消配置和新连接器

时间:2015-06-19 14:23:03

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

你好我昨天发了个问题。但是,我试图找出是否可以使用FIM完成以下操作。

我从AD导入用户对象并导出到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]

我将AD用户对象导入mv:person,以下是流规则。

enter image description here

到目前为止,我已经完成了这些工作。 我试图做的是在AD中重命名时(如用户的distinguishedName更改,如果它们被移动或cn值更改),那么我希望FIM删除sql记录并重新创建新的一个具有MemberDN列的新distinguishedname值。

有可能这样做吗?在metaverse配置代码中,我有以下内容:

      void IMVSynchronization.Provision (MVEntry mventry)
    {

        ConnectedMA sqlAnchorRenameUser;
        string mvObjectType = null;

switch (mventry.ObjectType)
            {

                case "SQLAnchorRenameUser":
                    sqlAnchorRenameUser = mventry.ConnectedMAs["SQL Anchor Rename SQLMA"];

                if (sqlAnchorRenameUser.Connectors.Count == 0)
                {
                    createAnchorRenameSQLUser(mventry, sqlAnchorRenameUser);
                }
                if (sqlAnchorRenameUser.Connectors.Count == 1)
                {
                    updateAnchorRenameSQLUser(mventry, sqlAnchorRenameUser);
                }


 }}

        void createAnchorRenameSQLUser(MVEntry mventry, ConnectedMA sqlAnchorRenameUser)
        {
            CSEntry csentry;
            csentry = sqlAnchorRenameUser.Connectors.StartNewConnector("AnchorRenameUser");
            csentry["distinguishedName"].Value = mventry["ADdistinguishedName"].Value;

            try
            {
                csentry.CommitNewConnector();
            }
            catch (System.Exception Ex)
            {
                throw new UnexpectedDataException(Ex.Message);
            }
        }

        void updateAnchorRenameSQLUser(MVEntry mventry, ConnectedMA sqlAnchorRenameUser)
        {
            CSEntry csentry;
            ReferenceValue dn;

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

            // Check to see if the distinguishedName flowing from AD has changed...
            if (mventry["ADdistinguishedName"].Value.ToLower() != mventry["isRenamed"].Value.ToLower())
            {
                // disconnect the old object.
                csentry.Deprovision();

                //Now provision new connector
                createAnchorRenameSQLUser(mventry, sqlAnchorRenameUser);

            }

        }

但它会引发错误。不工作:(

使用FIM for SQL可以完成这样的事情吗?从我通过互联网阅读的所有内容看来,FIM不允许重命名SQL的锚点。所以人们推荐的另一件事是删除记录并在SQL中重新创建它。这对我有用,但我很难配置FIM来做到这一点。请帮忙。

谢谢。 GT

0 个答案:

没有答案