目前 SSRS 內建兩種驗證模組,分別是 Windows 驗證延伸模組以及自訂延伸模組。其中 Windows 驗證延伸模組可支援多種驗證類型,包含:RSWindowsNegotiate、RSWindowsKerberos、RSWindowsNTLM 及 RSWindowsBasic,每一個驗證類型都可以個別開啟或關閉,因此,報表伺服器可以開啟複數種 Windows 驗證類型。
參考:
http://technet.microsoft.com/zh-tw/library/bb283249.aspx
設定 Windows 整合驗證
SSRS 預設是使用 Negotiate 驗證以及 NTLM 驗證 ( Windows 整合模式 ),報表伺服器管理員不需額外設定即可使用此種驗證模式。( IE 不直接支援 Kerberos 驗證類型 )
整合式安全性的設定步驟如下:
在文字編輯器中開啟 RSReportServer.config ( 預設的位置在 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer )。尋找 "<Authentication>" 區段。如果報表伺服器的服務帳戶是 NetworkService 或 LocalSystem 時 RSReportServer.config 檔就會包含 RSWindowsNegotiate 設定。否則,就會使用 RSWindowsNTLM 設定。如果您的應用程式只使用 Kerberos 驗證,您可以加入 RSWindowsKerberos。
當報表伺服器服務帳戶是 NetworkService 或 LocalSystem 時
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
當報表伺服器服務帳戶不是 NetworkService 或 LocalSystem 時<AuthenticationTypes>
<RSWindowsNegotiate />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
<Authentication>
<AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
<Authentication>
指定用於 Windows 整合式安全性的所有安全性封裝<AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate />
<RSWindowsKerberos />
<RSWindowsNTLM />
</AuthenticationTypes>
針對不支援 Kerberos 的部署指定 NTLM,或是暫時解決 Kerberos 驗證錯誤<RSWindowsNegotiate />
<RSWindowsKerberos />
<RSWindowsNTLM />
</AuthenticationTypes>
<AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>
<RSWindowsNTLM />
</AuthenticationTypes>
ASP.NET 必須設定 Windows 驗證。 根據預設,報表伺服器 Web 服務和報表管理員的 Web.config 檔案 ( 預設的位置在 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer )會包括設定 。 如果您將它變更為,Reporting Services 的 Windows 驗證將會失敗。 報表伺服器 Web 服務和報表管理員的 Web.config 檔案必須有設定 。 - 用戶端應用程式或瀏覽器必須支援 Windows 整合式安全性。
重新啟動所有報表伺服器,清除目前開啟的任何工作階段。
參考:
設定基本驗證
使用基本驗證時,瀏覽器會要求使用者輸入使用者名稱與密碼。這項資訊會透過 Base64 編碼方式來編碼的 HTTP 加以傳輸。由於密碼會以明碼方式傳送,可配合使用 SSL 進行加密。當設定為基本驗證之後,此時資料來源的連接屬性時,將無法選取「Windows 整合式安全性」的選項。
在文字編輯器中開啟 RSReportServer.config ( 預設的位置在 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer )。尋找 <Authentication> 區段。
若要啟動基本驗證
<Authentication>
<AuthenticationTypes>
<RSWindowsBasic>
<LogonMethod>3</LogonMethod>
<Realm></Realm>
<DefaultDomain></DefaultDomain>
</RSWindowsBasic>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
<AuthenticationTypes>
<RSWindowsBasic>
<LogonMethod>3</LogonMethod>
<Realm></Realm>
<DefaultDomain></DefaultDomain>
</RSWindowsBasic>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
若所有元素都使用預設值,可以把語法簡化如下
<AuthenticationTypes>
<RSWindowsBasic/>
</AuthenticationTypes>
<RSWindowsBasic/>
</AuthenticationTypes>
報表產生器3.0是利用 ClickOnce 技術,因為它不支援基本驗證,所以,當報表伺服器設定為基本驗證,ClickOnece 應用程式啟動器將無法通過驗證檢查。必須將報表產生器程式檔案設為匿名存取,才能讓 ClickOnce 擷取檔案時略過驗證檢查。
在基本驗證的報表伺服器設定報表產生器存取的步驟如下:
- 在 ReportBuilder 之下建立 bin 資料夾 (預設位置 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\ReportBuilder )。
將下列組件從 ReportServer\Bin 資料夾複製到 ReportBuilder\BIN 資料夾:
Microsoft.ReportingServices.Diagnostics.dll
Microsoft.ReportingServices.Interfaces.dll
ReportingServicesAppDomainManager.dll
RSHttpRuntime.dll - 建立一個 Web.config 檔,儲存到 ReportBuilder\bin 資料夾下,內容如下
<?xml version="1.0" encoding="utf-8" ?>如果包含 Web.config 檔,驗證模式必須設定為 Windows。
<configuration>
<system.web>
<authentication mode="Windows" />
<identity impersonate="true " userName="username" password="password"/>
</system.web>
</configuration>
Identity impersonate 可以是 True 或 False。
如果您不希望 ASP.NET 讀取安全性 Token,請將它設定為 False。 此要求將會在報表伺服器服務的安全性內容中執行。
如果您希望 ASP.NET 從主機層級讀取安全性 Token,請將它設定為 True。 如果您將它設定為 True,也必須指定 userName 和 password 來指派匿名帳戶。 您所指定的認證將會決定要求發出所在的安全性內容
開啟 RSReportServer.config 檔案,並在 Services 區段中尋找 IsReportManagerEnabled,然後在它的下方加入以下設定:
<IsReportBuilderAnonymousAccessEnabled>True</IsReportBuilderAnonymousAccessEnabled>
重新啟動報表伺服器。
參考:
設定表單驗證
除了 Windows 驗證之外,為了配合企業的安全性需求,SSRS 允許開發人員實作自訂驗證延伸模組,利用表單驗證或是使用單一簽入,以自訂的驗證延申模組取代預設的 Windows 驗證延伸模組,並控制授與外部使用者存取報表伺服器的權限。
自訂表單驗證如下:
在文字編輯器中開啟 RSReportServer.config ( 預設的位置在 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer )。尋找
<Authentication>
<AuthenticationTypes>
<Custom />
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
- 尋找 authentication mode 並將其設定為 Forms。
- 尋找 identity impersonate 並將其設定為 False。
- 尋找 authentication mode 並將其設定為 Forms。
- 尋找 identity impersonate 並將其設定為 False。
<UI>
<CustomAuthenticationUI>
...
<PassThroughCookies>
<PassThroughCookie>cookiename1</PassThroughCookie>
<PassThroughCookie>cookiename2</PassThroughCookie>
</PassThroughCookies>
</CustomAuthenticationUI>
...
</UI>
參考:
沒有留言:
張貼留言