1. 程式人生 > >Reporting Service 2016 自定義身份驗證

Reporting Service 2016 自定義身份驗證

一般MSRS都是windows身份驗證,在2016版本之前網上會有一些教程教你怎麼去配置,但是關於2016的配置教程網上幾乎沒有的, 所以今天在這裡分享給大家。(注:該配置方法目前只適合Reporting Service 2016,之前的版本請不要嘗試

首先找到SQL SERVER的安裝目錄:
我是用的虛擬機器所以直接安裝在C盤,具體路徑依你們自己的安裝路徑而定。

這裡寫圖片描述

找到MSRS開頭的資料夾

這裡寫圖片描述

首先我們需要更改四個config檔案:

  1. reportserver\rsreportserver.config
  2. reportserver\rssrvpolicy.config
  3. reportserver\web.config
  4. RSWebApp\Microsoft.ReportingServices.Portal.WebHost.exe.config

在rsreportserver.config裡面找到節點:Authentication ,用以下內容覆蓋:

<Authentication>
        <AuthenticationTypes> 
                <Custom/>
        </AuthenticationTypes>
        <RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel
>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario> <EnableAuthPersistence>true</EnableAuthPersistence> </Authentication>

再找到Security 節點用以下內容覆蓋,並指定管理員賬號為admin:

<Security>
<Extension Name="Forms" Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, Microsoft.Samples.ReportingServices.CustomSecurity"
>
<Configuration> <AdminConfiguration> <UserName>admin</UserName> </AdminConfiguration> </Configuration> </Extension> </Security>

指定的admin賬號用來配置完了之後去訪問報表,如果不指定會沒有許可權訪問報表,這裡只能指定一個人。 後面我會告訴大家怎麼去指定多人訪問。

繼續找到Authentication節點,注意這裡有兩個Authentication節點,要區分。用以下內容覆蓋:

<Authentication>
<Extension Name="Forms" Type="Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension,Microsoft.Samples.ReportingServices.CustomSecurity" />
</Authentication> 

然後找到UI節點用一下內容覆蓋“下邊的server要改成自己本機的server地址”

<UI>
<CustomAuthenticationUI>
<loginUrl>/Pages/UILogon.aspx</loginUrl>
<UseSSL>True</UseSSL>
</CustomAuthenticationUI>
<ReportServerUrl>http://<server>/ReportServer</ReportServerUrl>
<PageCountMode>Estimate</PageCountMode>
</UI>

用這個段程式碼覆蓋UI之後還要繼續接著新增一個UI節點:

 <UI>
    <CustomAuthenticationUI>
      <PassThroughCookies>
        <PassThroughCookie>sqlAuthCookie</PassThroughCookie>
      </PassThroughCookies>
    </CustomAuthenticationUI>
  </UI>

好了到這裡就改好了一個config檔案了。

然後在reportserver裡面找到rssrvpolicy.config,開啟找到CodeGroup節點,然後新增:

   <CodeGroup
class="UnionCodeGroup"
version="1"
Name="SecurityExtensionCodeGroup" 
Description="Code group for the sample security extension"
PermissionSetName="FullTrust">
<IMembershipCondition 
class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll"/>
</CodeGroup>

在reportserver/ 下找到web.config,找到authentication節點,用以下內容覆蓋:

<authentication mode="Forms">
        <forms loginUrl="logon.aspx" name="sqlAuthCookie" timeout="60" path="/"></forms>
</authentication> 

接著authentication節點後面新增以下內容:

<authorization> 
<deny users="?" />
</authorization> 

然後找到system.web節點,增加以下配置:

<machineKey validationKey="[YOUR KEY]" decryptionKey=""="[YOUR KEY]" validation="AES" decryption="AES" />

“[YOUR KEY]” 的生成可使用machine-key-generator 網頁版的網站生成。

在 \RSWebApp\Microsoft.ReportingServices.Portal.WebHost.exe.config中的configuration下增加節點:

<system.web>
<machineKey validationKey=="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />
</system.web>

config檔案的配置到這裡就結束了。

現在需要一個比較重要的東西(改MSRS身份驗證的安力保),在以往的版本中改身份驗證在MSDN上微軟給出了一個案例包裡面包含了一個登入頁面和三個類

這裡寫圖片描述

這裡寫圖片描述

在\CustomSecuritySample\Setup\CreateUserStore.sql 下面有一個sql指令碼,放到資料庫去執行下。

然後在bin目錄裡面找到~.CustomSecurity.dll和~.CustomSecurity.pdb這個兩個檔案,複製到
ReportServer\bin下和RSWebApp\bin下

把logon頁面複製到ReportServer資料夾下。

到這裡就配置完了。

最後你們可能會遇到一個問題:

這裡寫圖片描述

是因為Reporting Server的執行賬號沒有訪問資料庫的許可權造成的。

去資料庫裡面加下許可權就可以了。

之前說了在config裡面只能配置一個管理員賬號,那如果想讓別的人也要有許可權看報表的話,就得去改微軟給的案例裡面的一個名為“Authorization”的類,裡面有很多名為CheckAccess的方法:

這裡寫圖片描述

仔細觀察這個方法裡面有一個判斷:

這裡寫圖片描述

判斷username等於m_adminUserName,就是這個地方,由於我是在所有使用者進入報表之後再對使用者進行許可權分配的,所以這個地方我的改法是“username=username” 改完之後所有使用者都有檢視報表的許可權了。當然這個地方你們可以根據自己的需要自行更改。

更多文章請掃碼關注公眾號,有問題的小夥伴也可以在公眾號上提出哦。

這裡寫圖片描述

相關推薦

Reporting Service 2016 定義身份驗證

一般MSRS都是windows身份驗證,在2016版本之前網上會有一些教程教你怎麼去配置,但是關於2016的配置教程網上幾乎沒有的, 所以今天在這裡分享給大家。(注:該配置方法目前只適合Reporting Service 2016,之前的版本請不要嘗試) 首先

定義身份驗證

img home then mod 授權 寫入 clas ring tag 註: 本帖來源於 博主: 農碼一生; 本帖記錄純屬自己閱讀方便 第一步: 寫入cookie 第二步獲取cookie , 配置文件需要配置 <system.web> <auth

asp.net webapi 定義身份驗證

auth 服務端 ati end 驗證 rri span acc amp /// <summary> /// 驗證 /// </summary> /// Account API賬號 /// TimeStamp 請求時間 /// Sign

Power BI Report Server 定義身份驗證

參考文件地址:https://github.com/Microsoft/Reporting-Services/tree/master/CustomSecuritySample 這個地址呢詳細介紹瞭如何去配置PBI的Form驗證,但是呢有一個很坑的地方 在配置MachineK

Reporting Service使用定義程式碼或引用程式集

在 64 位 (x64) 平臺上,SQL Server Business Intelligence Development Studio 在 32 位 WOW 模式下執行。 在 x64 平臺上創作報表時,需要在報表創作客戶端上安裝 32 位資料訪問介面,以便預覽報表。 如果在同一系統上釋出報表,則需要 x

ApiController實現定義身份認證

del api color span () log list() etc serialize 1 /// <summary> 2 /// 身份認證 3 /// </summary> 4 public class Au

EasyUI validatebox 定義ajax驗證用戶名是否已存在

page pan cti ida length func fun [1] function <td><input type="text" id="userName" name="userName" class="easyui-validatebox" va

定義超時驗證

日期和時間 inter EDA cto time() term move 比對 指定 應用場景 用來驗證操作是否大於最小時間間隔,如果大於則允許操作,不大於則不允許操作 1. ValidateOvertimeUtil.java package com.qfx.uti

定義驗證

ret urn ESS .text emp save bytesio randint ima from PIL import Image from PIL import ImageDraw, ImageFont import random def get_valid_

java 定義註解驗證 (僅限於實體屬性值上的註解)

資源下載地址:http://download.csdn.net/detail/weilai_zhilu/9761533   該驗證主要包含三部分 註解驗證類 註解處理方法類 實體類 測試類 第一部分:註解驗證類(此部分暫時只寫了三個驗證類) 下面

Spirng定義註解(驗證身份證+性別+地區)

第一步:定義註解   MyDateTimeFormat: package com.wbg.maven1128.intface; import java.lang.annotation.*; @Documented @Retention(RetentionPolicy.

CAS 5.1.X版本定義jdbc驗證

一、前言 在不同的專案中,可能由於業務需求或者架構方式的不同,對於使用者登入的驗證方式也不同。CAS為我們提供了很多的認證模式,其中最常見的認證方式有: JDBC認證,可以通過配置,也可以重寫cas相關方法進行自定義認證 LDAP認證 Basic認證 Sh

thinkphp5定義配置驗證

這裡我說明如何配置驗證碼,並不涉及前端js的提交的程式碼 em... 我用的mac 不知道是以前安裝過composer還是mac自帶的有composer,反正我記得沒有安裝過composer(可能是年代太久遠我自己都忘了,後來百度了一波貌似mac並不自帶composer) 首先確認資料夾

Exchange 2016 定義 MessageTracking

Exchange 預設日誌流儲存45天,根據實際需求,可更改 下面命令是將,日誌單檔案設定為20MB、資料夾50G、儲存天數365天 Set-TransportService xxxxx -MessageTrackingLogPath "D:\Program Files\MicroSoft\Exchang

Django實現定義使用者驗證

強調:Django版本:1.9.5,Python版本:3.5 很多時候我們都要為一個系統開發使用者驗證的功能,而Django就為我們提供了一套現成的使用者驗證方法。 Django的使用者模型在contrib.auth.models.py,如下: class User(AbstractUs

如何做easyUI的定義Validatebox 驗證

如何實現和作用 通過 $.fn.validatebox.defaults 重寫預設的 defaults。 驗證框(validatebox)是為了驗證表單輸入欄位而設計的。如果使用者輸入無效的值,它將改變背景顏色,顯示警告圖示和提示訊息。驗證框(validateb

Struts2 如何定義一個驗證

為什麼定義一個驗證器? 雖然struts攔截器棧裡面有很多的驗證器,但是都是比較公共的,沒有為某個屬性專門做的,例如校驗18位的身份證; 如何定一個驗證器? 1、定義一個驗證器的類 實現一個介面 validator<T>,可以選擇實現ValidatorSupp

activemq定義安全驗證外掛,整合mysql

一.下載外掛程式碼所需jar包,我是在maven中引入,然後再copy到activemq的指定目錄: <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.activemq/a

許可權驗證程式碼詳解及定義許可權驗證

一、許可權認證原始碼詳解 1、進入dispatch 2、initial中self.check_permissions(request)進行許可權驗證 3、進入check_permissions for permission in self.get_permissions(): 4、

Android 定義獲取驗證碼倒計時按鈕

    import android.content.Context; import android.os.CountDownTimer; import android.support.v7.widget.AppCompatButton; import android.u