AX2012可以创建一种account type为claims user的账号,这种账号不需要在AD中事先已创建用户,但是claims账号是无法通过rich client登陆到AX,它的主要应用场景是在enterprise protal或者AIF中,这里具体来看看如何在AIF中使用Claims user。首先在AX中创建一个Claims user:

User Id是必须输入的,根据自己的命名规则可以任意编写,network domain也是可以根据自己的用途任意输入,alias可以使用邮件地址。

接下来我们创建一个名为ItemsPort的inbound ports,service operations中只选择InventItemService.find操作。需要注意的是我们要勾选“Allow trusted intermediary to impersonate”,在Trusted intermediary users中我们添加一个用户,比如Administrator账号。这是一个AD域用户的账号,后续我们的程序要用这个账号来执行。

创建一个c#的控制台程序,在service reference中添加从http://AOS_HOST:8101/DynamicsAx/Services/ItemsPort导入的服务,命名空间我们取为ItemReference。完整的程序如下:

using ConsoleApplication1.ItemReference;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var context = new CallContext
{
Company = "USMF",
LogonAsUser = "TestApp\\cu001@testapp.local",
Language = "en-gb"
};
var client = new ItemServiceClient();
var criteria = new QueryCriteria();
var itemIdCriteria = new CriteriaElement
{
DataSourceName = "InventTable",
FieldName = "ItemId",
Operator = Operator.Range,
Value1 = "A",
Value2 = "B"
};
criteria.CriteriaElement = new CriteriaElement[];
criteria.CriteriaElement[] = itemIdCriteria; try
{
var myItem = client.find(context, criteria);
if (myItem != null &&
myItem.InventTable != null &&
myItem.InventTable.Length > )
{
foreach (var item in myItem.InventTable)
{
Console.WriteLine("Item Id {0} - {1}", item.ItemId,item.NameAlias);
}
}
}
catch (Exception e)
{
Console.WriteLine("Error {0}", e.Message);
} Console.ReadKey();
}
}
}

程序是在inventtable查找首字母介于A和B直接的料号,运行后得到的结果是:“Error Access denied to method find in class InventItemService.”,这是因为我们没有对CU001用户授予权限,可以添加system administrator角色到CU001,重新运行就能得到正确的结果。

注意我们运行这个C#程序时用的域管理员账号,这个账号也是被添加到ItemPorts的Trusted intermediary users列表,如果我们把这个账号从Trusted intermediary users删除会是什么结果?我们会得到异常“Error An error occurred.”,具体的信息可以在system administration->periodic->services and application framework->exceptions查看,看到的是“The submitting user 'admin' has not been configured as a trusted intermediary for the port.”,“User is not authorised for this port.”。

如果不勾选“Allow trusted intermediary to impersonate”,又会是什么结果呢?得到的错误是“The submitting user 'Admin' is different from the logon user 'CU001', but a trusted intermediary has not been enabled on the port.”,同样最后结果也是“User is not authorised for this port.”。

回过头来看看AX没有要求CU001用户输入密码,只用它的用户名就可以登陆,这是因为AX信任当前程序的运行账号,相信这个Trusted intermediary users已经代为对CU001进行了认证。这是AIF的例子,EP也是同样如此,我们不需要对vendor和customer在AD中创建账号,而是直接在AX中创建对应的claims用户,而对这些用户的认证交由EP站点,AX信任EP站点连接时所有的BCP 代理账号。

[AX2012]Claims user的更多相关文章

  1. 全新的membership框架Asp.net Identity(2)——绕不过的Claims

    本来想直接就开始介绍Identity的部分,奈何自己挖坑太深,高举高打的方法不行.只能自己默默下载了Katana的源代码研究了好一段时间.发现要想能够理解好用好Identity, Claims是一个绕 ...

  2. AX2012导Demo数据

    看到这篇文章后http://www.cnblogs.com/duanshuiliu/archive/2012/07/18/2597645.html,为了大家的方便就分享下 关于AX2012的导Demo ...

  3. Creating Custom Connector Sending Claims with SharePoint 2013

    from:http://blogs.msdn.com/b/security_trimming_in_sharepoint_2013/archive/2012/10/29/creating-custom ...

  4. Claims Identity

    using System;using System.Collections.Generic;using System.Linq;using System.Security.Claims;using S ...

  5. AX2012 DMF数据导入的问题

    由于AX2012的数据结构比较复杂,通过Excel直接导入表的方式很多数据已经难以导入,比如物料信息,2009只需要导入InventTable,InventTableModule和InventItem ...

  6. [AX]AX2012 Number sequence framework :(三)再谈Number sequence

    AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...

  7. [AX2012 R3]在SSRS报表中使用QR二维码

    AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container ...

  8. [AX2012 R3]关于Alerts

    AX2012提供两种类型的Alert,Change-based alert和Due-date-based alert,前者用于在对新建记录.删除记录.记录的某个指定字段被改变的时候发出提醒,后者则是用 ...

  9. AX2012 R3升级CU8的一些错误

    AX2012 R3安装升级包CU8后进入系统,系统会提示打开软件升级清单“Software update checklist”,清单列出了升级要做的一系列动作. 在进行到编译应用时“Compile a ...

随机推荐

  1. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

    我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...

  2. [游戏模版21] Win32 物理引擎 能量守恒

    >_<:Only a little change in the function of MyPaint(...),besides the initial value have some c ...

  3. Linux基础精华

    Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...

  4. Windows Server 2008R2配置MySQL Cluster

    目录 配置环境 相关知识 配置过程 配置 ini参数解释 启动集群 检查配置 同步测试 故障测试 写在之后 配置环境 VMware:(版本10.0.01) 操作系统:Windows Server 20 ...

  5. atitit.spring3 mvc url配置最佳实践

    atitit.spring3 mvc url配置最佳实践 1. Url-pattern  bp 1 2. 通用星号url pattern的问题 1 3. Other code 1 4. 参考 2 1. ...

  6. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill

    paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:ht ...

  7. fir.im Weekly - 每个程序员都应当拥有的技能树

    本周收集了一些优秀的 iOS & Android 开发资源和程序员 IT 技能拓展的 Tips. 知道创宇研发技能表 v3.0 作为程序员可能都听说过[知道创宇],他们是一家黑客文化浓厚的安全 ...

  8. Maven之打包时配置文件替换

    在JavaWeb项目中,使用maven打包.在打正式包时,需要手动修改数据库配置为线上环境的地址,这样每次修改起来比较麻烦. 搜索了一些资料后,大部分的做法或原理都是预先使用表达式占位符,然后在打包时 ...

  9. Leetcode-122 Best Time to Buy and Sell Stock II

    #122  Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the pric ...

  10. VC中打开对话框选择文件和文件夹

    1.选择文件               CFileDialogdlg(true, NULL, NULL, NULL, "所有文件 | *.*", this);           ...