0

別のユーザーの呼び出しコンテキストを使用して AIF システム サービスを呼び出すことはできますか? 特に、ユーザーがアクセスできるテーブルを取得する必要があります。のメソッドを使用して、GetAccessRightsアクセスUserSessionServiceできるテーブルを抽出できます。他のユーザーに対してこれを呼び出す必要があるため、CallContext.LogonAsUser別のユーザーに設定しようとしましたが、エラーが発生しました:

タイプ 'System.ServiceModel.FaultException' の未処理の例外が mscorlib.dll で発生しました

追加情報: Microsoft Dynamics AX へのログオンに失敗しました。

カスタム サービスで LogonAsUser を使用できるようにするには、インバウンド ポートで「信頼できる中間ユーザー」を設定する必要があります。ただし、システム サービスでこれを設定することはできないようです。

これを contoso イメージでテストしています。contoso\Administrator としてログインしています。

完全なコード:

USSReference.UserSessionServiceClient client = new USSReference.UserSessionServiceClient();

USSReference.CallContext context = new USSReference.CallContext
{
    LogonAsUser = "VishwaR"
};

USSReference.AccessControlledItemKey key = new USSReference.AccessControlledItemKey();
key.ItemType = USSReference.AccessControlledType.Table;
key.ItemName = "CUSTTABLE";

UserService.USSReference.AccessRight[] rights = client.GetAccessRights(context, new USSReference.AccessControlledItemKey[] { key });
4

1 に答える 1

0

カスタムAIF インバウンド ポートを作成し、操作を追加できAifUserSessionService.GetAccessRightsます。ここで設定できますAllow trusted intermediary to impersonate

カスタム AIF サービスの操作

于 2015-06-19T11:03:32.553 に答える