王萬東,王 罡 ,杜晉博 ,方淑津 ,張林石
(1.上海交通大學 網(wǎng)絡信息中心,上海 200240;2.上海交通大學 財務計劃處,上海 200240)
隨著高校信息化的不斷發(fā)展,積累了大量的人事、財務、外事、教務、資產(chǎn)等方面的數(shù)據(jù),為各個高校進行大數(shù)據(jù)分析奠定了基礎(chǔ)。一些高校為了更好地發(fā)揮大數(shù)據(jù)的價值,開始建立管理決策支持系統(tǒng)。高校的大數(shù)據(jù)分析平臺,需要建立直觀的可視化分析展示平臺,確保數(shù)據(jù)安全和穩(wěn)定,數(shù)據(jù)自動更新,對接學校統(tǒng)一身份認證和授權(quán)體系,實現(xiàn)學校不同層級管理人員的操作權(quán)限、數(shù)據(jù)權(quán)限,并為各個業(yè)務領(lǐng)域內(nèi)的專業(yè)人員提供高效易用的分析數(shù)據(jù)、報表等專業(yè)分析工具,達到以支持學校管理決策的作用。因此選擇一款適合高校的BI產(chǎn)品變得十分關(guān)鍵。由于Power BI產(chǎn)品比同行業(yè)性價比高、發(fā)展趨勢好,因此上海交通大學管理決策系統(tǒng)選擇了微軟的Power BI產(chǎn)品構(gòu)架?;跀?shù)據(jù)安全和性價比的考慮,選擇了Power BI本地部署的方式。由于本地部署是基于Windows身份認證方式,所以Power BI與學校的統(tǒng)一身份認證和授權(quán)的無縫集成工作變得十分重要。本文對Power BI與上海交通大學統(tǒng)一身份認證和授權(quán)系統(tǒng)的集成實現(xiàn)進行詳細分析。
Power BI是一套商業(yè)數(shù)據(jù)分析工具,為管理者提供決策支持??蛇B接數(shù)百個數(shù)據(jù)源、簡化數(shù)據(jù)準備并提供及時分析。生成美觀的報表并進行發(fā)布,供組織在Web和移動設備上使用。每個人都可創(chuàng)建個性化儀表板,獲取針對其業(yè)務的全方位獨特見解。在企業(yè)內(nèi)實現(xiàn)擴展,內(nèi)置管理和安全性。Power BI都可讓你輕松地連接到數(shù)據(jù)源,直觀看到或發(fā)現(xiàn)重要內(nèi)容,與任何所希望的人進行共享。[1]
(1)統(tǒng)一身份認證
單點登錄(即jaccount)是上海交通大學網(wǎng)絡信息中心開發(fā)的用戶認證體系。通過jaccount認證體系,可以在Web應用中實現(xiàn)單點登錄,即用戶在一個瀏覽器會話期里只需登錄一次就能進入所有他擁有訪問權(quán)限的jaccount成員站點。同時,jaccount也可以為校內(nèi)第三方應用提供統(tǒng)一身份認證和單點登錄服務,提供了方便的開發(fā)方式和接口。[2]
(2)統(tǒng)一授權(quán)系統(tǒng)
統(tǒng)一授權(quán)系統(tǒng)是在統(tǒng)一身份認證體系的基礎(chǔ)上建立起來的統(tǒng)一管理各業(yè)務系統(tǒng)權(quán)限、角色、崗位的通用平臺,各業(yè)務系統(tǒng)可以在統(tǒng)一授權(quán)系統(tǒng)中定義所需的權(quán)限、角色、崗位、屬性等內(nèi)容,管理員可以在統(tǒng)一授權(quán)系統(tǒng)中通過統(tǒng)一的入口直接管理各業(yè)務系統(tǒng)的角色和崗位。各業(yè)務系統(tǒng)可以通過Web接口或者數(shù)據(jù)交換平臺獲取用戶在各自業(yè)務系統(tǒng)中的角色、崗位和權(quán)限。[3]
用Power BI相關(guān)產(chǎn)品開發(fā)數(shù)據(jù)分析系統(tǒng),主要開發(fā)內(nèi)容包括,建立數(shù)據(jù)倉庫、創(chuàng)建Sql Server Analysis Service模型項目、創(chuàng)建Sql Server Integration Services項目、創(chuàng)建Power BI Report Server、Power BI Desktop進行自助分析并發(fā)布到Power BI Report Server、Web應用訪問Power BI Report Server發(fā)布的報表等,本文提到的Web應用系統(tǒng)主要是指上海交通大學管理決策系統(tǒng)。具體的業(yè)務主要是利用ETL工具從數(shù)據(jù)中心獲取到相關(guān)業(yè)務數(shù)據(jù)存到數(shù)據(jù)倉庫,建立數(shù)據(jù)模型,創(chuàng)建大數(shù)據(jù)可視化的分析圖表發(fā)布到圖表服務器,用戶通過Web應用系統(tǒng)訪問相應的圖表。具體的Power BI本地部署架構(gòu)如圖1所示。
圖1 Power BI本地部署架構(gòu)圖
本文討論的解決方案是基于Power BI采用本地部署的方式。Power BI與學校的統(tǒng)一身份認證和授權(quán)系統(tǒng)集成主要有兩個難點,一個是用戶通過統(tǒng)一身份認證登錄后,如何免登錄到Power BI Report Server;另一個是用戶登錄到Power BI Report Server后,如何控制用戶訪問Power BI Report Server報表權(quán)限。
由于本文討論的Power BI基于本地部署的方式,所以Power BI Report Server的認證方式是Windows身份認證的方式,需要借助于CustomSecuritySample開源項目[4]來實現(xiàn)自定義認證。需要對CustomSecuritySample項目的代碼進行二次開發(fā),同時按照CustomSecuritySample項目的說明進行配置,從而實現(xiàn)用戶通過統(tǒng)一身份認證后登錄到Web應用系統(tǒng),然后借助CustomSecuritySample實現(xiàn)Power BI Report Server的Forms認證,從而自動登錄到Power BI Report Server。(見圖2)
圖2 統(tǒng)一身份認證集成流程圖
(1)搭建項目
本系統(tǒng)開發(fā)中用的開發(fā)工具是Microsoft Visual Studio 2015、Microsoft SQL Server 2016,以自定義認證項目CustomSecuritySample為基礎(chǔ)進行二次開發(fā),用Microsoft Visual Studio 2015打開CustomSecuritySample.sln,添加引用 Microsoft.ReportingServices.Interfaces.dll。
(2)項目關(guān)鍵代碼
修改Logon.aspx里的Page_Load方法,用戶登錄Web應用后,自動登錄到Power BI Report Server,這樣用戶查看報表的時候就可以直接訪問發(fā)布在Power BI Report Server里的報表了。主要代碼如下所示:
主要是就是驗證用戶名和密碼是否正確。如果正確返回true,用戶自動登錄到Power BI Report Server,自定義認證項目內(nèi)部實現(xiàn)了登錄到Power BI Report Server。
(3)項目配置部署到Power BI Report Server服務器
一是將Logon.aspx頁面復制到Report Server的安裝目錄下。將CustomSecurity.dll和CustomSecurity.pdb復制到bin文件夾下,同理將這兩個文件復制到Portal和PowerBI安裝目錄下。
二是修改RSReportServer.config文件。找到
三是修改Report Server的Web.config文件。找到
四是配置Passthrough cookies,如下所示:
(4)項目遠程調(diào)試
項目部署好后,如果有問題可以用遠程調(diào)試來定位問題。下面就給出遠程調(diào)試的主要步驟。主要就是在自定義認證項目CustomSecuritySample里修改好代碼,部署到Power BI Report Server后,如果發(fā)現(xiàn)修改的內(nèi)容沒有生效或出錯,就可以開啟遠程調(diào)試的方式來定位問題。遠程調(diào)試主要就是把本地的Visual Studio 2015安裝目錄下的Remote Debugger文件夾全部拷貝到Power BI Report Server部署所在的服務器上,然后以管理員的權(quán)限運行msvsmon文件,在工具菜單里選擇允許任何人遠程調(diào)試即可。在Visual Studio 2015項目里選擇附加到進程調(diào)試,傳輸方式選擇“遠程(無身份驗證)”,限定符的IP為遠程服務器的IP地址,端口號是msvsmon里允許的端口號,例如211.X.X.58:5022。點擊刷新按鈕,附加到相應的進程即可進行遠程調(diào)試。
上海交大統(tǒng)一授權(quán)系統(tǒng)可以對用戶進行崗位授權(quán),例如在統(tǒng)一授權(quán)系統(tǒng)中,對用戶A授權(quán)崗位B,這樣用戶A就擁有了崗位B在各個應用系統(tǒng)中對應的崗位權(quán)限。崗位權(quán)限在應用系統(tǒng)中進行設置,崗位可以被授予頁面權(quán)限,用戶登錄應用系統(tǒng)后就可以訪問應用系統(tǒng)中相應的頁面。而我們討論的Power BI的報表就是嵌套在頁面里,如果想訪問頁面里的報表內(nèi)容,就必須把Power BI Report Server里的報表訪問權(quán)限授予崗位,這樣用戶擁有了報表對應的崗位權(quán)限后就可以訪問報表了。
圖3 統(tǒng)一授權(quán)系統(tǒng)集成流程圖
Power BI Report Server報表崗位授權(quán)的關(guān)鍵步驟是把報表訪問的權(quán)限授予崗位,這樣用戶擁有崗位的權(quán)限后就可以訪問報表了。用Power BI Desktop制作好報表后,發(fā)布到Power BI Report Server指定的文件夾里。發(fā)布報表前管理員需要在Power BI Report Server上新建文件夾。在對文件夾的安全性里添加“組或用戶”,新增“組或用戶”的時候需要和崗位名稱保持一致,同時用戶訪問報表的時候會判斷用戶的崗位是否在文件夾的“組或用戶”里。主要代碼是改寫CustomSecuritySample項目里的Authorization.cs類的CheckOperations方法。主要代碼如下所示:
本文闡述了上海交大管理決策系統(tǒng)采用本地部署的Power BI產(chǎn)品、上海交大統(tǒng)一身份認證和授權(quán)系統(tǒng)進行無縫集成的設計和實現(xiàn),其中的難點就是本地部署Power BI產(chǎn)品采用的是Windows身份認證方式,借助于自定義認證項目改寫其認證方式為Forms認證,同時通過控制Power BI Report Server里文件夾訪問權(quán)限,來實現(xiàn)與統(tǒng)一授權(quán)系統(tǒng)集成。授權(quán)用戶通過統(tǒng)一身份認證登錄后,根據(jù)其崗位顯示相應的菜單,如果有權(quán)限就可以在Web應用系統(tǒng)里直接瀏覽相應菜單下的Power BI Report Server里的報表了,從而實現(xiàn)了對報表的精確權(quán)限控制。由于Power BI的功能強大和性價比較高,在Gartner 2018 BI與數(shù)據(jù)分析魔力象限中可以看出Power BI已經(jīng)處于行業(yè)的領(lǐng)先地位。[5]未來會有越來越多的高校和企業(yè)開始使用Power BI。希望本文中的內(nèi)容,可以給這些高校和企業(yè)帶來一定的幫助,讓他們在和統(tǒng)一身份認證和授權(quán)系統(tǒng)對接的時候少走一些彎路。