こんにちは 昨日質問を投稿しました。ただし、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 にインポートしています。以下はフロー ルールです。
私はこれまでに機能するものを手に入れました。私がやろうとしているのは、ADで名前の変更が発生したとき(ユーザーのdistinguishedNameの変更、移動またはcn値の変更など)の場合、FIMでSQLレコードを削除し、新しいdistinguishname値で新しいレコードを再作成することですMemberDN 列の場合。
これを行うことは可能ですか?メタバース プロビジョニング コードには、次のものがあります。
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