[AX2012]Claims user
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的更多相关文章
- 全新的membership框架Asp.net Identity(2)——绕不过的Claims
本来想直接就开始介绍Identity的部分,奈何自己挖坑太深,高举高打的方法不行.只能自己默默下载了Katana的源代码研究了好一段时间.发现要想能够理解好用好Identity, Claims是一个绕 ...
- AX2012导Demo数据
看到这篇文章后http://www.cnblogs.com/duanshuiliu/archive/2012/07/18/2597645.html,为了大家的方便就分享下 关于AX2012的导Demo ...
- 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 ...
- Claims Identity
using System;using System.Collections.Generic;using System.Linq;using System.Security.Claims;using S ...
- AX2012 DMF数据导入的问题
由于AX2012的数据结构比较复杂,通过Excel直接导入表的方式很多数据已经难以导入,比如物料信息,2009只需要导入InventTable,InventTableModule和InventItem ...
- [AX]AX2012 Number sequence framework :(三)再谈Number sequence
AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...
- [AX2012 R3]在SSRS报表中使用QR二维码
AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container ...
- [AX2012 R3]关于Alerts
AX2012提供两种类型的Alert,Change-based alert和Due-date-based alert,前者用于在对新建记录.删除记录.记录的某个指定字段被改变的时候发出提醒,后者则是用 ...
- AX2012 R3升级CU8的一些错误
AX2012 R3安装升级包CU8后进入系统,系统会提示打开软件升级清单“Software update checklist”,清单列出了升级要做的一系列动作. 在进行到编译应用时“Compile a ...
随机推荐
- Dynamic CRM 2013学习笔记(四十)流程3 - 对话(Dialog)用法图解
我们将用对话来实现一个简单的满意度调查,下一个问题依赖于上一个问题.对话是同步的,不同于工作流既可以是同步也可以是异步的:对话可以跟用户互动:对话只能手动开始:对话只支持 .Net Framework ...
- 实验七 状态机设计ADC0809采样控制电路
一.实验目的 学习用状态机实现A/D转换器ADC0809的采样控制电路. 二.实验内容 利用QuartusⅡ实现A/D转换器ADC0809的采样控制电路状态机设计:给出仿真波形.最后进行引脚锁定并进行 ...
- [stm32] MPU6050 HMC5883 Kalman 融合算法移植
一.卡尔曼滤波九轴融合算法stm32尝试 1.Kalman滤波文件[.h已经封装为结构体] /* Copyright (C) 2012 Kristian Lauszus, TKJ Electronic ...
- [ACM_图论] Fire Net (ZOJ 1002 带障碍棋盘布炮,互不攻击最大数量)
Suppose that we have a square city with straight streets. A map of a city is a square board with n ...
- [WinAPI] 串口读写
#include <stdio.h> #include <stdlib.h> #include <windows.h> HANDLE hComm; OVERLAPP ...
- mysql输入密码后闪退怎么办?
第一: 首先需要想到的是mysql的服务可能没开,首先打开mysql的服务 第二: 打开Mysql的命令行输入密码即可 第三: 登录成功 第四: 顺便验证自己安装的mysql是否成功 输入显示所有数据 ...
- 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
//在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...
- 转:MPlayer源代码分析
一.Mplayer支持的格式 MPlayer是一个LINUX下的视频播放器,它支持相当多的媒体格式,无论在音频播放还是在视频播放方面,可以说它支持的格式是相当全面的. 视频格式支持:MPEG.AVI. ...
- c# 操作excel 替代方案
一直使用excel com 接口进行excel 操作,最近一次因为权限折腾了个够呛,果断放弃,使用 NPOI FileStream file = new FileStream(url, FileMod ...
- 使用Android Studio打Andorid apk包的流程
启动Android studio 1.点击菜单栏Build -> Generate Signed APK...,打开如下窗口 2.这里是类似eclipse中Android的签名,假设这里没有 ...