摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复272或者20180616可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。
人不学不知道,我以前也不知道Dynamics 365 Customer Engagement (就是Dynamics 365的CRM部分功能)中还有非交互式这种账号,今天我们一起来看看吧。
首先我们在Office 365管理门户( https://portal.office.com )中像建立普通用户一样建立一个账户,给他授予一个许可证,这样他才会同步到Dynamics 365 Customer Engagement中去。
一会儿你在Office 365管理门户的【账单】 > 【许可证】中就会看到你刚才授予的这种许可证的分配数量增加了1,也就是占用了一个许可。在Dynamics 365 Customer Engagement中也可以看到这个用户了。我们先为它分派一个角色,我这里分派为系统管理员,然后我用这个账户使用浏览器登录Dynamics 365 Customer Engagement,你可以看到是可以登录的。
现在我们在Dynamics 365 Customer Engagement > 【设置】 > 【安全性】 > 【用户】中将这个用户账号的【访问模式】设置为【非交互式】,然后保存。
然后我在用这个账户使用浏览器来登录Dynamics 365 Customer Engagement,登录后提示如下:您对此组织仅具有 SDK 访问权限。您没有查看、创建、编辑或删除数据的必要权限。请联系您的 Microsoft Dynamics 365 管理员寻求帮助。
我们现在去Office 365管理门户中将这个用户的许可取消,待到【账单】 > 【许可证】该用户使用的许可证类型分配数量增加1后,我们再去Dynamics 365 Customer Engagement中查看这个用户,你会发现该用户并没有被禁用,状态还是已启用。若是普通的用户账户,取消许可后该账户的状态将会变成禁用,不能使用。
不能通过浏览器登录Dynamics 365 Customer Engagement,但是它能够通过SDK的方式来做操作。我这里用简单的代码来登录并执行消息是可以的:
IServiceManagement<IOrganizationService> orgServiceManagement = ServiceConfigurationFactory.CreateManagement<IOrganizationService>(new Uri("https://luoyongdemo.api.crm5.dynamics.com/XRMServices/2011/Organization.svc"));
AuthenticationCredentials authCredentials = new AuthenticationCredentials();
authCredentials.ClientCredentials.UserName.UserName = "noninteractiveuser@luoyongdemo.onmicrosoft.com";
authCredentials.ClientCredentials.UserName.Password = "Pass@w0rd1";
using (OrganizationServiceProxy organizationProxy = GetProxy<IOrganizationService, OrganizationServiceProxy>(orgServiceManagement, authCredentials))
{
WhoAmIRequest whoAmIReq = new WhoAmIRequest();
var whoAmIRep = organizationProxy.Execute(whoAmIReq) as WhoAmIResponse;
var userEntity = organizationProxy.Retrieve("systemuser", whoAmIRep.UserId, new ColumnSet("fullname"));
Console.WriteLine(string.Format("登录成功,欢迎{0},继续操作请输入y!", userEntity.GetAttributeValue<string>("fullname")));
}
Console.WriteLine("程序运行成功!");
Console.ReadKey();
这是程序运行后的截图:
但是,如果根据我前面的文章 控制台程序(C#)不弹出认证窗口连接到Dynamics CRM Online的Web API 来做的话会报错如下,因为这篇文章使用非交互式账号登录是不行的。
AADSTS65001: The user or administrator has not consented to use the application with ID '7a092321-a423-4dc0-b1b3-9801898dec32' named 'LuoYong Demo'. Send an interactive authorization request for this user and resource.
通过前面的演示,我觉得可以总结下:
1. 可以节省许可费用,一个许可每年都要收钱,节约一个是一个,为客户着想省钱,提升项目的投入产出比。
2. 因为非交互式账号不能通过浏览器登录Dynamics 365 Customer Engagement,相对更安全一些。拿到这个账号的密码,没有Dynamics 365 Customer Engagement开发能力的也做不了什么。
3. 此类账户专门为Dynamics 365 Customer Engagement 与其它系统,如ERP等集成使用,妥妥的。
当然有一个值得注意的地方就是一个CRM Online实例最多只能允许存在5个非交互式账号。