zoukankan      html  css  js  c++  java
  • Dynamics 365中的非交互式账号(Non-interactive User)介绍

    摘要: 本人微信和易信公众号: 微软动态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个非交互式账号。

  • 相关阅读:
    cpu核数和逻辑个数的区别_CPU逻辑核心数和物理核心数
    linux查看CPU数
    Java读取excel中日期格式结果为数字44326天
    Java实现读取excel中的数据及图片
    jmeter设置全局变量,获取登录token,实现两个线程组参数公用
    CPU使用率
    快照版本和发布版本区别
    jmeter与postman请求结果返回不一致
    接口认证方式:Bearer Token
    jmeter 中报java.lang.OutOfMemoryError: Java heap space
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Non-interactive_User.html
Copyright © 2011-2022 走看看