摘要: 本人微信和易信公眾號: 微軟動態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個非交互式賬號。