另一个用户的 AX 2012 R3 AIF 系统服务调用上下文

AX 2012 R3 AIF System Services Callcontext of another user

是否可以使用其他用户的调用上下文来调用 AIF 系统服务? 我特别需要获取用户有权访问哪些表。通过使用 UserSessionService 中的方法 GetAccessRights,我可以提取我有权访问的表。 我需要为其他用户调用它,所以我尝试将 CallContext.LogonAsUser 设置为另一个用户,但出现错误:

An unhandled exception of type 'System.ServiceModel.FaultException' occurred in mscorlib.dll

Additional information: Failed to logon to Microsoft Dynamics AX.

为了能够在自定义服务上使用 LogonAsUser,我需要在入站端口上设置 "Trusted intermediary users"。但是,似乎无法在系统服务上进行设置。

我正在 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 });

您可以创建自定义 AIF 入站端口 并添加 AifUserSessionService.GetAccessRights 操作。 这里可以设置Allow trusted intermediary to impersonate.