黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

使用Reporting Services中的窗體身份驗(yàn)證

系統(tǒng) 2072 0

使用 Reporting Services 中的窗體身份驗(yàn)證

發(fā)布日期: 8/18/2004 | 更新日期: 8/18/2004

Microsoft Corporation

適用范圍:
Microsoft? SQL Server? 2000 Reporting Services

摘要: 了解有關(guān) Reporting Services 安全擴(kuò)展方面的知識(shí),著重學(xué)習(xí)窗體身份驗(yàn)證。此外,下載和部署 Reporting Services 的窗體身份驗(yàn)證擴(kuò)展示例。

*

要安裝示例代碼,請(qǐng)下載 Forms Authentication Sample installer ,并在計(jì)算機(jī)上運(yùn)行它。

本頁內(nèi)容
引言 引言
關(guān)于本指南 關(guān)于本指南
Reporting Services 平臺(tái) Reporting Services 平臺(tái)
窗體身份驗(yàn)證示例 窗體身份驗(yàn)證示例
結(jié)論 結(jié)論
參考資料 參考資料

引言

部署安全的分布式企業(yè)報(bào)告解決方案是一個(gè)極具挑戰(zhàn)性的過程。從報(bào)告訪問到提供重要數(shù)據(jù)(有時(shí)是敏感數(shù)據(jù))的數(shù)據(jù)源,您需要針對(duì)如何在報(bào)告環(huán)境中對(duì)用戶進(jìn)行安全的身份驗(yàn)證和授權(quán)作出決策。在安全方面,報(bào)告是報(bào)告鏈中最薄弱的環(huán)節(jié)。

所需的安全類型取決于報(bào)告環(huán)境和已安裝的安全系統(tǒng)類型。Microsoft? Windows? Authentication 是用于確保 Microsoft? SQL Server? 2000 Reporting Services 中的報(bào)告安全性的主要系統(tǒng)。Windows Authentication 提供與其他 Microsoft 服務(wù)器產(chǎn)品的緊密集成,由于 Reporting Services 是在 Windows Authentication 上設(shè)計(jì)和測(cè)試的,因此它在這個(gè)環(huán)境中的安全性最高。

然而,在某些情況下,可能需要對(duì) Reporting Services 安全系統(tǒng)進(jìn)行擴(kuò)展,以滿足企業(yè)自定義安全的需要。您可以通過功能豐富的 Reporting Services API 開發(fā)平臺(tái)達(dá)到這一目的。本指南將概述 Reporting Services 中的擴(kuò)展,尤其是安全擴(kuò)展。您還可以下載適用于 Reporting Services 的示例窗體身份驗(yàn)證擴(kuò)展,并對(duì)它進(jìn)行深入研究。隨后,您可以利用 Reporting Services 安全擴(kuò)展將自定義安全添加到企業(yè)報(bào)告解決方案中。

關(guān)于本指南

本指南中提供的信息旨在:

?

向您介紹 Reporting Services 安全擴(kuò)展。

?

確定在 Reporting Services 中使用自定義身份驗(yàn)證和授權(quán)的位置和方式。

?

介紹身份驗(yàn)證和授權(quán)在 Reporting Services 中的工作方式。

?

介紹窗體身份驗(yàn)證及其實(shí)現(xiàn)方式。

?

為您提供了一個(gè)可以下載和研究的窗體身份驗(yàn)證示例。

必備知識(shí)

本指南未介紹 ASP.NET 安全或窗體身份驗(yàn)證,未提供有關(guān)編程或應(yīng)用程序安全的深層次知識(shí)。作為一名期望為 Reporting Services 實(shí)現(xiàn)安全擴(kuò)展的開發(fā)人員,您應(yīng)該對(duì)以下一個(gè)或多個(gè)方面有著深入的了解:

?

Microsoft Reporting Services 功能,尤其是身份驗(yàn)證、授權(quán)和基于角色的安全。

?

Microsoft .NET Framework。

?

ASP.NET 和 ASP.NET 安全。

?

窗體身份驗(yàn)證。

?

.NET 語言方面的開發(fā)經(jīng)歷。本文僅提供用 C# 編寫的示例。

要直接了解代碼,可以轉(zhuǎn)到“窗體身份驗(yàn)證示例”部分。不過,您可能會(huì)發(fā)現(xiàn)前面的幾部分很有幫助,這些部分介紹了您將使用的某些技術(shù)以及如何將這些技術(shù)組合在一起使用。

Reporting Services 平臺(tái)

通過 Reporting Services,可在整個(gè)企業(yè)中設(shè)計(jì)、部署和交付報(bào)告。從開發(fā)人員的角度來看,Reporting Services 通過 .NET Framework 和 Web service 的關(guān)鍵開發(fā)平臺(tái)提供了各種編程機(jī)會(huì)。Reporting Services 可以通過“隨手可用”的方式進(jìn)行部署,從而可以在任何公司中提供全面的報(bào)告解決方案。然而,Reporting Services 的開放式和可擴(kuò)展編程體系結(jié)構(gòu)使它已不再是一個(gè)現(xiàn)成的產(chǎn)品,而更像是開發(fā)人員以及最終用戶的報(bào)告平臺(tái)。

擴(kuò)展 Reporting Services

Reporting Services 具有可擴(kuò)展性。通過托管代碼 API,可以開發(fā)、安裝和管理許多 Reporting Services 組件使用的擴(kuò)展??梢允褂?.NET Framework 創(chuàng)建專用或共享的程序集,并添加新的 Reporting Services 功能以滿足日益增長(zhǎng)的業(yè)務(wù)需求。開發(fā)人員可通過以下方式擴(kuò)展 Reporting Services:

?

除了 Reporting Services 當(dāng)前附帶的 Microsoft SQL Server、Oracle 和 OLE DB 提供程序以外,創(chuàng)建其他數(shù)據(jù)處理擴(kuò)展。數(shù)據(jù)處理擴(kuò)展可用于從您自己特有的數(shù)據(jù)源中讀取數(shù)據(jù),并可用于在創(chuàng)建和篩選數(shù)據(jù)集時(shí)并入其他業(yè)務(wù)邏輯。

?

除了 Reporting Services 當(dāng)前附帶的電子郵件和文件共享交付擴(kuò)展以外,創(chuàng)建其他交付擴(kuò)展。交付擴(kuò)展可用于向傳真機(jī)、尋呼機(jī)、打印機(jī)等設(shè)備交付報(bào)告。

?

除 Reporting Services 已經(jīng)附帶的呈現(xiàn)擴(kuò)展之外,創(chuàng)建其他呈現(xiàn)擴(kuò)展。

?

除了 Windows Authentication 擴(kuò)展(它當(dāng)前是該產(chǎn)品的默認(rèn)安全機(jī)制)之外,創(chuàng)建其他安全擴(kuò)展。

如前所述,本指南主要介紹了如何通過窗體身份驗(yàn)證擴(kuò)展 Reporting Services 的安全系統(tǒng)。

安全擴(kuò)展

通過 Reporting Services 安全擴(kuò)展,可以對(duì)用戶或組進(jìn)行身份驗(yàn)證和授權(quán),即它使不同的用戶能夠登錄到報(bào)告服務(wù)器,并根據(jù)他們的身份執(zhí)行不同的任務(wù)或操作。默認(rèn)情況下,Reporting Services 使用基于 Windows 的身份驗(yàn)證擴(kuò)展,該身份驗(yàn)證擴(kuò)展使用 Windows 帳戶協(xié)議驗(yàn)證聲稱擁有該系統(tǒng)帳戶的用戶的身份。Reporting Services 使用基于角色的安全系統(tǒng)對(duì)用戶進(jìn)行授權(quán)。Reporting Services 基于角色的安全模式類似于其他技術(shù)的基于角色的安全模式。由于安全擴(kuò)展基于開放式、可擴(kuò)展的 API,因此可以在 Reporting Services 中創(chuàng)建新身份驗(yàn)證和授權(quán)擴(kuò)展。以下是使用基于窗體的身份驗(yàn)證和授權(quán)的安全擴(kuò)展實(shí)現(xiàn)的典型示例:

ufairs01

1 如圖所示,身份驗(yàn)證和授權(quán)按如下過程進(jìn)行:

1.

用戶嘗試通過輸入 URL 來訪問 Report Manager,然后被重定向到一個(gè)為客戶端應(yīng)用程序收集用戶憑據(jù)的窗體。

2.

該用戶將憑據(jù)提交給窗體。

3.

通過 LogonUser 方法將該用戶的憑據(jù)提交給 Reporting Services Web service。

4.

Web service 調(diào)用客戶提供的安全擴(kuò)展,并驗(yàn)證自定義安全機(jī)構(gòu)中是否存在該用戶名和密碼。

5.

進(jìn)行身份驗(yàn)證時(shí),Web service 將創(chuàng)建身份驗(yàn)證票據(jù)(稱作“Cookie”),管理該票據(jù),并驗(yàn)證該用戶的角色能否訪問 Report Manager 的主頁。

6.

Web service 將 Cookie 返回給瀏覽器,并在 Report Manager 中顯示相應(yīng)的用戶界面。

7.

身份驗(yàn)證結(jié)束后,瀏覽器向 Report Manager 發(fā)出請(qǐng)求,同時(shí)在 HTTP 標(biāo)頭中傳輸此 Cookie。這些請(qǐng)求是為響應(yīng) Report Manager 應(yīng)用程序中的用戶操作而發(fā)出的。

8.

該 Cookie 連同請(qǐng)求的用戶操作在 HTTP 標(biāo)頭中一起被傳輸?shù)?Web service。

9.

Cookie 將接受驗(yàn)證,如果它有效,報(bào)告服務(wù)器將從報(bào)告服務(wù)器數(shù)據(jù)庫中返回與請(qǐng)求操作相關(guān)的安全描述符和其他信息。

10.

如果 Cookie 有效,報(bào)告服務(wù)器將調(diào)用安全擴(kuò)展,以檢查該用戶是否有權(quán)執(zhí)行特定的操作。

11.

如果該用戶已被授權(quán),報(bào)告服務(wù)器將執(zhí)行請(qǐng)求的操作,并將控制返回給調(diào)用方。

12.

該用戶經(jīng)過身份驗(yàn)證后,對(duì)報(bào)告服務(wù)器的 URL 訪問將使用相同的 Cookie。該 Cookie 在 HTTP 標(biāo)頭中傳輸。

13.

用戶繼續(xù)在報(bào)告服務(wù)器上請(qǐng)求操作,直至?xí)捊Y(jié)束。

何時(shí)實(shí)現(xiàn)安全擴(kuò)展

Microsoft 建議您盡可能地使用 Windows Authentication。不過,但在以下兩種情況下,應(yīng)使用 Reporting Services 的自定義身份驗(yàn)證和授權(quán):

?

Internet 或 Extranet 應(yīng)用程序未使用或無法使用 Windows 帳戶。

?

您具有自定義的用戶和角色,并且需要在 Reporting Services 中提供匹配的授權(quán)方案。

安全擴(kuò)展 API

下表列出了安全擴(kuò)展的可用接口和類。

接口或類 說明

IAuthenticationExtension 接口

表示 Reporting Services 中的身份驗(yàn)證擴(kuò)展,使您能夠?qū)崿F(xiàn)可用于用戶身份驗(yàn)證(使用自定義身份驗(yàn)證方案)的安全擴(kuò)展類。

IAuthorizationExtension 接口

表示可用于擴(kuò)展 Reporting Services 的授權(quán)功能的擴(kuò)展,使您能夠?qū)崿F(xiàn)可用于授權(quán)用戶執(zhí)行操作的安全擴(kuò)展類。

IExtension 接口

表示 Reporting Services 中的擴(kuò)展。

AceCollection 類

表示指定一個(gè)或多個(gè)受信任者的訪問權(quán)限的訪問控制項(xiàng)的集合。

AceStruct 類

受信任者(用戶、組或計(jì)算機(jī))的訪問控制項(xiàng),用于指定受信者可以對(duì)報(bào)告服務(wù)器數(shù)據(jù)庫中的項(xiàng)目執(zhí)行的操作。

CatalogOperationsCollection 類

表示目錄操作集合。

DatasourceOperationsCollection 類

表示數(shù)據(jù)源操作集合。

FolderOperationsCollection 類

表示文件夾操作集合。

OperationNames 類

包含用戶可以對(duì) Reporting Services 中的項(xiàng)目執(zhí)行的操作的字段名和相應(yīng)值。

ReportOperationsCollection 類

表示報(bào)告操作集合。

ResourceOperationsCollection 類

表示資源操作集合。

有關(guān)安全擴(kuò)展 API 的各種接口和類的詳細(xì)信息,請(qǐng)參閱 Reporting Services 聯(lián)機(jī)叢書。

Reporting Services 中的身份驗(yàn)證

身份驗(yàn)證是建立用戶身份權(quán)限的過程。有許多方法可用于用戶身份驗(yàn)證。最常用的方法是使用密碼。實(shí)現(xiàn)窗體身份驗(yàn)證時(shí),應(yīng)使用這樣的實(shí)現(xiàn):請(qǐng)求用戶提供憑據(jù)(一般通過要求輸入登錄名和密碼的某種界面),然后根據(jù)用戶存儲(chǔ)(例如,數(shù)據(jù)庫表或配置文件)驗(yàn)證用戶。如果憑據(jù)無法得到驗(yàn)證,身份驗(yàn)證進(jìn)程將失敗,用戶將獲取匿名身份。

在 Reporting Services 中,Windows 操作系統(tǒng)通過集成的安全性或通過用戶憑據(jù)的顯式接收和驗(yàn)證來處理用戶的身份驗(yàn)證??蓪?duì) Reporting Services 中的自定義身份驗(yàn)證進(jìn)行開發(fā),使之支持其他身份驗(yàn)證方案。為此,可使用安全擴(kuò)展接口 IAuthenticationExtension 。所有擴(kuò)展都繼承于 IExtension ,它是報(bào)告服務(wù)器部署和使用的任何擴(kuò)展的基本接口。 IExtension IAuthenticationExtension Microsoft.ReportingServices.Interfaces 命名空間的成員。

LogonUser 方法是 Reporting Services 中所有身份驗(yàn)證的核心??墒褂盟鼘⒂脩魬{據(jù)傳遞給報(bào)告服務(wù)器進(jìn)行驗(yàn)證?;A(chǔ)安全擴(kuò)展實(shí)現(xiàn)包含自定義身份驗(yàn)證代碼的 IAuthenticationExtension.LogonUser 。在窗體身份驗(yàn)證示例(將在本指南后面部分介紹)中, LogonUser 根據(jù)提供的憑據(jù)和數(shù)據(jù)庫中的自定義用戶存儲(chǔ)區(qū)執(zhí)行身份驗(yàn)證檢查。在窗體身份驗(yàn)證示例中,它類似于以下過程:

AuthenticationExtension.cs (窗體身份驗(yàn)證示例)中

      public bool LogonUser(string userName, string password, string authority){   return AuthenticationUtilities.VerifyPassword(userName, password);}
    

AuthenticationUtilities.cs (窗體身份驗(yàn)證示例)中

      internal static bool VerifyPassword(string suppliedUserName,   string suppliedPassword){    bool passwordMatch = false;   // 基于用戶名從數(shù)據(jù)庫中獲取 Salt 和密碼。   // 請(qǐng)參閱“How To:Use DPAPI (Machine Store) from ASP.NET”、“How To:   // Use DPAPI (User Store) from Enterprise Services”和“How To:   // Create a DPAPI Library”,以了解有關(guān)如何使用   // DPAPI 安全地存儲(chǔ)連接字符串的詳細(xì)信息。   SqlConnection conn = new SqlConnection(      "Server=localhost;" +       "Integrated Security=SSPI;" +      "database=UserAccounts");   SqlCommand cmd = new SqlCommand("LookupUser", conn);   cmd.CommandType = CommandType.StoredProcedure;   SqlParameter sqlParam = cmd.Parameters.Add("@userName",       SqlDbType.VarChar,       255);   sqlParam.Value = suppliedUserName;   try   {      conn.Open();      SqlDataReader reader = cmd.ExecuteReader();      reader.Read(); // 跳轉(zhuǎn)到唯一行      // 從返回的數(shù)據(jù)流返回輸出參數(shù)      string dbPasswordHash = reader.GetString(0);      string salt = reader.GetString(1);      reader.Close();      // 現(xiàn)在采用用戶輸入的 Salt 和密碼      // 并將它們串聯(lián)在一起。      string passwordAndSalt = String.Concat(suppliedPassword, salt);      // 現(xiàn)在對(duì)它們進(jìn)行哈希操作      string hashedPasswordAndSalt =         FormsAuthentication.HashPasswordForStoringInConfigFile(         passwordAndSalt,         "SHA1");      // 現(xiàn)在驗(yàn)證它們。如果它們相等,則返回 true      passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);   }   catch (Exception ex)   {       throw new Exception("Exception verifying password. " +          ex.Message);   }   finally   {       conn.Close();   }   return passwordMatch;}
    

身份驗(yàn)證流程

Reporting Services Web service 提供自定義身份驗(yàn)證,以便 Report Manager 和報(bào)告服務(wù)器能夠進(jìn)行窗體身份驗(yàn)證。

Reporting Services Web service 的 LogonUser 方法用于將憑據(jù)提交給報(bào)告服務(wù)器,以進(jìn)行身份驗(yàn)證。Web service 使用 HTTP 標(biāo)頭將身份驗(yàn)證票據(jù)(稱為“Cookie”)從服務(wù)器傳遞到客戶端,以響應(yīng)已驗(yàn)證的登錄請(qǐng)求。

下圖描述了當(dāng)使用配置為使用自定義身份驗(yàn)證擴(kuò)展的報(bào)告服務(wù)器來部署您的應(yīng)用程序時(shí),對(duì)要訪問 Web service 的用戶進(jìn)行身份驗(yàn)證的方法。

ufairs02

2 如圖 2 所示,身份驗(yàn)證進(jìn)程如下:

1.

客戶端應(yīng)用程序調(diào)用 Web service 方法 LogonUser 對(duì)用戶進(jìn)行身份驗(yàn)證。

2.

Web service 調(diào)用安全擴(kuò)展(具體而言,是指實(shí)現(xiàn) IAuthenticationExtension 的類)的 LogonUser 方法。

3.

LogonUser 的實(shí)現(xiàn)驗(yàn)證用戶存儲(chǔ)或安全機(jī)構(gòu)中的用戶名和密碼。

4.

身份驗(yàn)證成功后,Web service 將創(chuàng)建 Cookie 并針對(duì)會(huì)話對(duì)其進(jìn)行管理。

5.

Web service 通過 HTTP 標(biāo)頭將身份驗(yàn)證票據(jù)返回給調(diào)用的應(yīng)用程序。

Web service 通過安全擴(kuò)展成功對(duì)用戶進(jìn)行身份驗(yàn)證后,將生成一個(gè) Cookie,用于隨后的請(qǐng)求。由于報(bào)告服務(wù)器沒有安全機(jī)構(gòu),因此該 Cookie 不會(huì)一直保存在自定義安全機(jī)構(gòu)中。Cookie 從 Web service 方法 LogonUser 返回,并用于隨后的 Web service 方法調(diào)用以及 URL 訪問。

安全: 為了避免在傳輸過程中泄露 Cookie,應(yīng)使用安全套接字層 (SSL) 加密安全地傳輸從 LogonUser 返回的 Cookie。

如果在安裝了自定義安全擴(kuò)展的情況下通過 URL 訪問來訪問報(bào)告服務(wù)器,則 Internet 信息服務(wù) (IIS) 和 ASP.NET 將自動(dòng)管理身份驗(yàn)證票據(jù)的傳輸。如果通過 SOAP API 訪問報(bào)告服務(wù)器,則代理類的實(shí)現(xiàn)必須包含對(duì)身份驗(yàn)證票據(jù)管理的附加支持。有關(guān)使用 SOAP API 和管理身份驗(yàn)證票據(jù)的詳細(xì)信息,請(qǐng)參閱本指南后面的“將 Web service 用于自定義安全”。

Reporting Services 中的身份驗(yàn)證

授權(quán)是指決定是否為某一身份授予請(qǐng)求類型的訪問權(quán)限(訪問報(bào)告服務(wù)器數(shù)據(jù)庫中的給定資源的權(quán)限)的過程。Reporting Services 使用基于角色的授權(quán)體系結(jié)構(gòu),即,基于應(yīng)用程序中的用戶角色授予用戶訪問給定資源的權(quán)限。Reporting Services 的安全擴(kuò)展包含授權(quán)組件(一旦用戶在報(bào)告服務(wù)器上得到驗(yàn)證,該授權(quán)組件便用于授予用戶權(quán)限)的實(shí)現(xiàn)。當(dāng)用戶試圖通過 SOAP API 和通過 URL 訪問對(duì)系統(tǒng)或報(bào)告服務(wù)器項(xiàng)目執(zhí)行操作時(shí),授權(quán)便被調(diào)用。為此,可以使用安全擴(kuò)展接口 IAuthorizationExtension 。如前所述,所有擴(kuò)展都繼承于 IExtension ,它是部署的任何擴(kuò)展的基本接口。 IExtension IAuthorizationExtension Microsoft.ReportingServices.Interfaces 命名空間的成員。

在授權(quán)中,任何自定義安全實(shí)現(xiàn)的關(guān)鍵是訪問權(quán)檢查,該檢查在方法 CheckAccess 中進(jìn)行。每當(dāng)用戶試圖在報(bào)告服務(wù)器上進(jìn)行操作時(shí), CheckAccess 便會(huì)被調(diào)用。 CheckAccess 方法將針對(duì)每種操作類型進(jìn)行重載。對(duì)于文件夾操作,訪問權(quán)檢查的示例可能如下所示:

      // 針對(duì)文件夾操作重載public bool CheckAccess(   string userName,    IntPtr userToken,    byte[] secDesc,    FolderOperation requiredOperation){   // 如果用戶是管理員,則允許無限制訪問。   if (userName == m_adminUserName)       return true;   AceCollection acl = DeserializeAcl(secDesc);   foreach(AceStruct ace in acl)   {         if (userName == ace.PrincipalName)         {            foreach(FolderOperation aclOperation in                ace.FolderOperations)            {               if (aclOperation == requiredOperation)                     return true;            }         }   }   return false;}
    

報(bào)告服務(wù)器通過傳入登錄用戶的名稱、用戶令牌、操作項(xiàng)目的安全描述符和請(qǐng)求的操作來調(diào)用 CheckAccess 方法。此處。您將檢查用戶名的安全描述符和完成請(qǐng)求的適當(dāng)權(quán)限,然后返回 true ,表明訪問權(quán)限已授予,或者返回 false ,表明訪問權(quán)限被拒絕。

安全描述符

為報(bào)告服務(wù)器數(shù)據(jù)庫中的項(xiàng)目設(shè)置授權(quán)策略時(shí),客戶端應(yīng)用程序(例如 Report Manager)將把用戶信息以及項(xiàng)目的安全策略提交給安全擴(kuò)展。此安全策略和用戶信息統(tǒng)稱為安全描述符。安全描述符包含報(bào)告服務(wù)器數(shù)據(jù)庫中的項(xiàng)目的以下信息:

?

對(duì)項(xiàng)目具有某種操作權(quán)限的組或用戶。

?

項(xiàng)目的類型。

?

控制項(xiàng)目訪問權(quán)的隨機(jī)訪問控制列表。

安全描述符是通過 Web service 方法 SetPolicies SetSystemPolicies 創(chuàng)建的。有關(guān)這些方法和 Web service 的詳細(xì)信息,請(qǐng)參閱 Reporting Services 聯(lián)機(jī)叢書。

授權(quán)流程

Reporting Services 授權(quán)由當(dāng)前在配置為在服務(wù)器上運(yùn)行的安全擴(kuò)展控制。授權(quán)是基于角色的,并受限于 Reporting Services 安全體系結(jié)構(gòu)提供的權(quán)限和操作。下圖說明了如何授權(quán)用戶對(duì)報(bào)告服務(wù)器數(shù)據(jù)庫中的項(xiàng)目執(zhí)行操作。

ufairs03

3 如圖 3 所示,授權(quán)按照以下順序進(jìn)行:

1.

身份驗(yàn)證完成后,客戶端應(yīng)用程序通過 Reporting Services Web service 方法向報(bào)告服務(wù)器發(fā)出請(qǐng)求。身份驗(yàn)證票據(jù)以每個(gè) Web 請(qǐng)求的 HTTP 標(biāo)題中的 Cookie 的形式傳遞給報(bào)告服務(wù)器。

2.

在進(jìn)行任何訪問權(quán)檢查之前,Cookie 將被驗(yàn)證。

3.

完成 Cookie 的驗(yàn)證后,報(bào)告服務(wù)器將調(diào)用 GetUserInfo ,以便向用戶授予標(biāo)識(shí)。

4.

用戶通過 Reporting Services Web service 嘗試操作。

5.

報(bào)告服務(wù)器調(diào)用 CheckAccess 方法,

6.

并隨即檢索安全描述符,并將其傳遞給 CheckAccess 的自定義安全擴(kuò)展實(shí)現(xiàn)。此時(shí),用戶、組或計(jì)算機(jī)將與訪問的項(xiàng)目的安全描述符進(jìn)行比較,并被授予執(zhí)行請(qǐng)求操作的權(quán)限。

7.

如果用戶得到授權(quán),Web service 將執(zhí)行操作,并向調(diào)用應(yīng)用程序返回響應(yīng)。

窗體身份驗(yàn)證示例

如果您尚未安裝窗體身份驗(yàn)證示例,請(qǐng)下載 Forms Authentication Sample installer ,并在計(jì)算機(jī)上運(yùn)行它,以安裝示例代碼。

關(guān)于該示例

窗體身份驗(yàn)證示例安全擴(kuò)展可作為本指南的一部分下載,它使用窗體身份驗(yàn)證以及 SQL Server 提供與 Reporting Services 一起使用的自定義安全模式。本示例僅用于演示目的,而不適用于生產(chǎn)環(huán)境,也未在生產(chǎn)環(huán)境中進(jìn)行測(cè)試。Microsoft 對(duì)此示例不提供技術(shù)支持。在某些情況下,該示例中演示了最佳做法(例如,創(chuàng)建單向哈希、帶salt 的密碼)。在其他情況下,為簡(jiǎn)單起見,而回避了最佳做法。應(yīng)注意,該示例安全擴(kuò)展的設(shè)置和管理經(jīng)常要求您在報(bào)告服務(wù)器計(jì)算機(jī)上擁有管理員訪問權(quán)。不管怎樣,都不建議在連接環(huán)境中的生產(chǎn)服務(wù)器上使用該示例。

如果您對(duì) Reporting Services 安全擴(kuò)展有任何疑問,請(qǐng)與 Microsoft 咨詢服務(wù) (MCS)、主要支持服務(wù) (PSS) 或其他 Microsoft 支持服務(wù)代表聯(lián)系。

要求

要使用本示例,必須安裝了以下工具:

?

安裝了 Microsoft SQL Server 2000 Reporting Services 的報(bào)告服務(wù)器。

?

用于訪問 Report Manager 的 Microsoft Internet Explorer 6.0 或更高版本。

?

安裝了 Microsoft? Visual Studio? .NET 2003 的開發(fā)計(jì)算機(jī)。

注意事項(xiàng)

實(shí)現(xiàn)自定義安全擴(kuò)展或使用該示例時(shí),請(qǐng)注意以下事項(xiàng):

?

不能在混和模式安全系統(tǒng)(例如,同時(shí)使用 Windows Authentication 和窗體身份驗(yàn)證)下運(yùn)行報(bào)告服務(wù)器。這也適用于任何 ASP.NET 應(yīng)用程序。

?

務(wù)必保存因配置該示例而更改的所有配置文件的備份副本。

?

盡管可以在部署該示例后恢復(fù)到 Windows Authentication,但這可能有一定難度。有關(guān)詳細(xì)信息,請(qǐng)參閱本指南后面的“刪除示例擴(kuò)展”。

?

覆蓋 Windows Authentication 是非常危險(xiǎn)的。報(bào)告服務(wù)器在安全方面具有可擴(kuò)展性,但僅使用了 Windows Authentication 對(duì)它進(jìn)行了全面測(cè)試和支持。

?

請(qǐng)始終將安全套接字層 (SSL) 用于窗體身份驗(yàn)證。

?

在本示例中,用戶輸入傳遞到 Transact-SQL 命令,以進(jìn)行身份驗(yàn)證。在您自己的自定義安全擴(kuò)展(將窗體身份驗(yàn)證和 SQL Server 配合使用)中,應(yīng)謹(jǐn)慎對(duì)待用戶輸入驗(yàn)證,并確保結(jié)果命令不包含語法錯(cuò)誤。應(yīng)確保驗(yàn)證所有用戶輸入,以防惡意用戶導(dǎo)致應(yīng)用程序運(yùn)行任意的 SQL 命令(也稱為“SQL 插入攻擊”)。登錄進(jìn)程中驗(yàn)證提供的用戶名尤為重要,因?yàn)閳?bào)告服務(wù)器自定義安全模式完全取決于能否對(duì)用戶進(jìn)行正確的標(biāo)識(shí)、身份驗(yàn)證和授權(quán)。

?

在自定義用戶存儲(chǔ)中,避免用戶輸入帶有以下字符的名稱:: ? ; @ & = + $ , \ * > < | . " /。帶有這些字符的用戶名可能會(huì)導(dǎo)致“My Reports”(我的報(bào)告)功能出現(xiàn)問題,因?yàn)槲募A在服務(wù)器中是使用用戶名創(chuàng)建的,且這些字符可能導(dǎo)致文件夾名稱和文件夾路徑出現(xiàn)問題。示例代碼使用正則表達(dá)式測(cè)試用戶名是否有效,并確保路徑名不超過允許的最大路徑長(zhǎng)度。應(yīng)該在自定義身份驗(yàn)證代碼中執(zhí)行類似的驗(yàn)證。

窗體身份驗(yàn)證

窗體身份驗(yàn)證是一種 ASP.NET 身份驗(yàn)證,通過這種身份驗(yàn)證,可將未經(jīng)身份驗(yàn)證的用戶定向到 HTML 窗體。當(dāng)用戶提供憑據(jù)后,系統(tǒng)將發(fā)出包含身份驗(yàn)證票據(jù)的 Cookie。在隨后的請(qǐng)求中,系統(tǒng)首先檢查該 Cookie,確定報(bào)告服務(wù)器是否已對(duì)用戶進(jìn)行身份驗(yàn)證。

Reporting Services 本身不支持窗體身份驗(yàn)證。不過,可使用 Reporting Services API 提供的安全擴(kuò)展接口對(duì) Reporting Services 進(jìn)行擴(kuò)展,使其支持窗體身份驗(yàn)證。如果將 Reporting Services 擴(kuò)展為可以使用窗體,請(qǐng)將安全套接字層 (SSL) 用于所有與報(bào)告服務(wù)器進(jìn)行的通信,以防惡意用戶獲取對(duì)其他用戶的 Cookie 的訪問權(quán)。SSL 可使客戶端和報(bào)告服務(wù)器相互進(jìn)行身份驗(yàn)證,并確保其他計(jì)算機(jī)無法讀取這兩臺(tái)計(jì)算機(jī)之間的通信內(nèi)容。通過 SSL 連接從客戶端發(fā)出的所有數(shù)據(jù)都經(jīng)過加密,這樣,惡意的用戶便無法截獲發(fā)送至報(bào)告服務(wù)器的密碼或數(shù)據(jù)。

實(shí)現(xiàn)窗體身份驗(yàn)證通常是為了支持非 Windows 帳戶和身份驗(yàn)證。圖形界面將展示給請(qǐng)求訪問報(bào)告服務(wù)器的用戶,提供的憑據(jù)將提交給安全機(jī)構(gòu),以進(jìn)行身份驗(yàn)證。

當(dāng)有交互式用戶輸入憑據(jù)時(shí),窗體身份驗(yàn)證方案就會(huì)派上用場(chǎng)。不過,對(duì)于與 Reporting Services Web service 直接通信的無人值守應(yīng)用程序,必須將窗體身份驗(yàn)證與自定義身份驗(yàn)證方案組合使用。

以下情況下,窗體身份驗(yàn)證適用于 Reporting Services:

?

需要對(duì)沒有 Microsoft Windows 帳戶的用戶進(jìn)行存儲(chǔ)和身份驗(yàn)證,并

?

需要在 Web 站點(diǎn)的不同頁面間提供您自己的用戶界面窗體作為登錄頁面。

編寫支持窗體身份驗(yàn)證的自定義安全擴(kuò)展時(shí),請(qǐng)考慮以下事項(xiàng):

?

如果使用窗體身份驗(yàn)證,則必須在 Internet 信息服務(wù) (IIS) 中的報(bào)告服務(wù)器虛擬目錄上啟用匿名訪問。

?

必須將 ASP.NET 身份驗(yàn)證設(shè)置為“Forms”(窗體)??梢栽趫?bào)告服務(wù)器的 Web.config 文件中配置 ASP.NET 身份驗(yàn)證。

?

Reporting Services 可使用 Windows Authentication 或自定義身份驗(yàn)證對(duì)用戶進(jìn)行身份驗(yàn)證和授權(quán)。Reporting Services 不支持同時(shí)使用多個(gè)安全擴(kuò)展。

部署示例

要運(yùn)行和檢查窗體身份驗(yàn)證示例的代碼,必須先執(zhí)行幾個(gè)步驟。執(zhí)行安裝和配置步驟后,即可在報(bào)告服務(wù)器上使用或調(diào)試示例,或在 Visual Studio .NET 中查看示例代碼。

編譯和安裝擴(kuò)展程序集

必須按照以下步驟編譯和安裝擴(kuò)展。這些步驟假設(shè)您已將 Reporting Services 安裝到默認(rèn)位置:C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services。該位置在本指南的余下部分統(tǒng)稱為 <install> 。

使用 Visual Studio .NET 編譯示例

1.

在 Microsoft Visual Studio .NET 2003 中打開 CustomSecurity.sln。如果已經(jīng)下載了源代碼并將示例安裝到默認(rèn)位置,便可以在 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\Samples\Extensions 中訪問到它。

2.

在“解決方案資源管理器”中,選擇 CustomSecurity 項(xiàng)目。

3.

在“項(xiàng)目”菜單上,單擊“添加引用”。

4.

“添加引用”對(duì)話框?qū)⒋蜷_。

5.

單擊“.NET”選項(xiàng)卡。

6.

單擊“瀏覽”進(jìn)行導(dǎo)航,以在本地驅(qū)動(dòng)器上找到 Microsoft.ReportingServices.Interfaces。默認(rèn)情況下,該程序集位于 <install> \ReportServer\bin 目錄中。單擊“確定”。

選定的引用被添加至項(xiàng)目中。

7.

在“生成”菜單中單擊“生成解決方案”。

8.

將 Microsoft.Samples.ReportingServices.CustomSecurity.dll 和 Microsoft.Samples.ReportingServices.CustomSecurity.pdb 復(fù)制到 <install> \ReportServer\bin 目錄中。

9.

將 Microsoft.Samples.ReportingServices.CustomSecurity.dll 和 Microsoft.Samples.ReportingServices.CustomSecurity.pdb 復(fù)制到 <install> \ReportManager\bin 目錄中。

10.

將 Logon.aspx 頁復(fù)制到 <install> \ReportServer 目錄中,并將 UILogon.aspx 頁復(fù)制到 <install> \ReportManager\Pages 目錄中。

將該擴(kuò)展添加到配置文件中。

將程序集和登錄頁體身份驗(yàn)證適用于 Report,需要對(duì) Report Server 和 Report Manager 配置文件做一些修改。

要點(diǎn): 在進(jìn)行任何更改前,請(qǐng)備份所有配置文件。

修改 RSReportServer.config 文件

1.

使用 Visual Studio .NET 或一個(gè)簡(jiǎn)單的文本編輯器(例如,記事本)打開 RSReportServer.config 文件。RSReportServer.config 位于 <install> \ReportServer 目錄中。

2.

找到 < Security > 和 < Authentication > 元素,并按如下方式修改設(shè)置:

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

修改 RSWebApplication.config 文件

1.

然后,需要打開位于 <install> \ReportManager 目錄中的 Report Manager 配置文件 RSWebApplication.config。

2.

找到 < UI > 元素,并按如下方式更新它:

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

安全: 如果在未安裝 SSL 證書的開發(fā)環(huán)境中運(yùn)行示例擴(kuò)展,則必須在上一個(gè)配置項(xiàng)中將 <UseSSL> 元素的值更改為 False。將 Reporting Services 和窗體身份驗(yàn)證組合使用時(shí),Microsoft 建議您始終使用 SSL。

添加擴(kuò)展的安全策略

您將需要為自定義安全擴(kuò)展添加代碼組,以便向擴(kuò)展授予 FullTrust 權(quán)限。為此,可以將代碼組添加到 <install> \ReportServer 目錄中的 rssrvpolicy.config 文件中。在安全策略文件中找到具有 $CodeGen 的 URL 成員身份的現(xiàn)有代碼組(如下所示),然后按如下方式將項(xiàng)目添加到 rssrvpolicy.config 中。

      <CodeGroup   class="UnionCodeGroup"   version="1"   PermissionSetName="FullTrust">   <IMembershipCondition       class="UrlMembershipCondition"      version="1"      Url="$CodeGen$/*"   /></CodeGroup><CodeGroup   class="UnionCodeGroup"   version="1"   Name="SecurityExtensionCodeGroup"   Description="示例安全擴(kuò)展的代碼組"   PermissionSetName="FullTrust">   <IMembershipCondition       class="UrlMembershipCondition"      version="1"      Url="C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll"   /></CodeGroup>
    

注意: 為簡(jiǎn)單起見,窗體身份驗(yàn)證示例命名不是很嚴(yán)格,在安全策略文件中要求的 URL 成員身份項(xiàng)也很簡(jiǎn)單。在生產(chǎn)安全擴(kuò)展實(shí)現(xiàn)中,應(yīng)該創(chuàng)建強(qiáng)名稱程序集,并在添加程序集的安全策略時(shí)使用強(qiáng)名稱成員身份條件。有關(guān)強(qiáng)名稱程序集的詳細(xì)信息,請(qǐng)參閱 MSDN 上的“Creating and Using Strong-Named Assemblies”,其網(wǎng)址為 http://msdn.microsoft.com/library/en-us/cpguide/html/cpconworkingwithstrongly-namedassemblies.asp (英文)。

然后,需要在 <install> \ReportManager 目錄中的 Report Manager 策略文件中為 MyComputer 代碼組增加權(quán)限。在 rsmgrpolicy.config 中找到以下代碼組,并按如下方式將 PermissionSetName 屬性從 Execution 更改為 FullTrust

      <CodeGroup         class="FirstMatchCodeGroup"         version="1"         PermissionSetName="FullTrust"        Description="該代碼組為 MyComputer 代碼授予 Execution 權(quán)限。 ">    <IMembershipCondition             class="ZoneMembershipCondition"            version="1"            Zone="MyComputer" />
    

配置 Web.config 文件

要使用窗體身份驗(yàn)證,您需要修改 Report Manager 和 Report Server 的 Web.config 文件,以更改身份驗(yàn)證并禁用模擬。

修改 Report Server Web.config 文件

1.

在文本編輯器中打開 Web.config 文件。默認(rèn)情況下,該文件位于 <install> \ReportServer 目錄中。

2.

找到 < identity > 元素,并將 impersonate 屬性設(shè)置為 false

              <identity impersonate="false" />
            

3.

找到 < authentication > 元素,并將 mode 屬性更改為 Forms 。

4.

將以下 < forms > 元素作為 < authentication > 元素的子級(jí)添加,并按如下方式設(shè)置 loginUrl 、 name timeout path 屬性:

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

5.

將以下 < authorization > 元素直接添加到 < authentication > 元素之后。

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

這會(huì)拒絕將訪問報(bào)告服務(wù)器的權(quán)限授予未經(jīng)身份驗(yàn)證的用戶。< authentication > 元素的先前建立的 loginUrl 屬性將把未經(jīng)身份驗(yàn)證的用戶重定向到 Logon.aspx 頁上。

修改 Report Manager Web.config 文件

1.

打開 Report Manager 的 Web.config。它位于 <install> \ReportManager 目錄中。

2.

找到 <identity impersonate= "true" /> 部分,然后按如下方式更改它,以便禁用模擬:<identity impersonate="false" />。

配置匿名身份驗(yàn)證

默認(rèn)情況下,Windows 用戶組 Guests 包含 IUSR_ computername 帳戶。該帳戶用于最初的本地登錄以及查看 Logon.aspx 頁。要支持窗體身份驗(yàn)證,必須啟用 ReportServer 虛擬目錄的匿名訪問。默認(rèn)情況下,匿名訪問被禁用。

啟用匿名身份驗(yàn)證

1.

在“Internet 信息服務(wù)”中,選擇 ReportServer 虛擬目錄(通常是默認(rèn)網(wǎng)站的成員),然后打開它的屬性選項(xiàng)卡。

2.

單擊“目錄安全性”選項(xiàng)卡。

3.

在“匿名訪問和身份驗(yàn)證控制”部分,單擊“編輯”。

將顯示“身份驗(yàn)證方法”對(duì)話框。

4.

選中“匿名訪問”復(fù)選框。

5.

單擊“確定”。

6.

對(duì) Reports 虛擬目錄重復(fù)上述步驟。

創(chuàng)建用戶帳戶數(shù)據(jù)庫

示例包含一個(gè)數(shù)據(jù)庫腳本,即 createuserstore.sql,用于在 SQL Server 數(shù)據(jù)庫中為窗體示例建立一個(gè)用戶存儲(chǔ)。

創(chuàng)建 UserAccounts 數(shù)據(jù)庫

1.

打開“查詢分析器”,然后連接到 SQL Server 的本地實(shí)例。

2.

找到 SQL 腳本文件 createuserstore.sql。該腳本文件包含在示例項(xiàng)目文件中。注意,在腳本的結(jié)尾處,必須用您自己的計(jì)算機(jī)名替換“LocalMachine”。對(duì)于 Windows 2003 用戶,用 NT AUTHORITY\NETWORK SERVICE 替換 LocalMachine\ASPNET(在 IIS 5 兼容模式下時(shí)除外)

3.

運(yùn)行查詢以創(chuàng)建 UserAccounts 數(shù)據(jù)庫。

4.

退出“查詢分析器”。

測(cè)試示例

通過以下步驟測(cè)試示例擴(kuò)展。注冊(cè)管理員用戶,即將該用戶名、密碼哈西和 Salt 值添加到 UserAccounts 數(shù)據(jù)庫中的用戶表。它還將要求您在報(bào)告服務(wù)器配置文件中輸入該用戶名。然后,您將以同一個(gè)用戶身份登錄以確保報(bào)告服務(wù)器正確運(yùn)行密碼驗(yàn)證例程以及正確加載擴(kuò)展程序集。

測(cè)試示例安全擴(kuò)展部署

1.

在命令提示符下運(yùn)行 iisreset.exe,重新啟動(dòng) IIS。

2.

打開 Report Manager。您可以從 Reporting Services 程序菜單打開它或通過從瀏覽器訪問 Reports 虛擬目錄來打開它。

3.

輸入用戶名和密碼,然后單擊“注冊(cè)用戶”,將用戶添加到帳戶數(shù)據(jù)庫中。

4.

打開 RSReportServer.config 文件。找到 < Security > 元素,然后按如下方式添加以前注冊(cè)的用戶名:

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

5.

返回到 UILogon.aspx 頁,重新輸入用戶名和密碼,然后單擊“登錄”。

您應(yīng)該能夠不受限制地訪問 Report Manager 和報(bào)告服務(wù)器。創(chuàng)建的管理員用戶對(duì)報(bào)告服務(wù)器的權(quán)限與對(duì)本地計(jì)算機(jī)上的內(nèi)置管理員帳戶的權(quán)限相同。在本示例中,只能將一位用戶指定為管理員。擁有內(nèi)置管理員帳戶后,即可注冊(cè)其他用戶,并指派他們?cè)趫?bào)告服務(wù)器中的角色。

注意: 建議將管理員用戶添加到報(bào)告服務(wù)器的正式 System Administrator 和 Content Manager(根文件夾)角色中。這可防止報(bào)告服務(wù)器數(shù)據(jù)庫中出現(xiàn)空的安全描述符。有關(guān) System Administrator 和 Content Manager 角色的詳細(xì)信息,請(qǐng)參閱 Reporting Services 聯(lián)機(jī)叢書。

將 Web Service 用于自定義安全

您可以將 Web service API 用于窗體身份驗(yàn)證,就像將 Windows Authentication 用于窗體身份驗(yàn)證一樣。不過,您必須調(diào)用 Web service 代碼中的 LogonUser ,并傳遞當(dāng)前用戶的憑據(jù)。此外,Web service 客戶端將不具備 Internet Explorer 或其他 Web 瀏覽器提供的自動(dòng) Cookie 管理功能。您必須擴(kuò)展 ReportingService 代理類以包含 Cookie 管理。為此,可以覆蓋 Web service 類的 GetWebRequest GetWebResponse 方法。

有關(guān)這方面的示例,請(qǐng)參閱 MSDN 上的“ReportingService.LogonUser Method”,其網(wǎng)址為 http://msdn.microsoft.com/library/en-us/rsprog/htm/rsp_ref_soapapi_service_lz_3d7q.asp (英文)。

調(diào)試示例擴(kuò)展

在調(diào)試程序中運(yùn)行示例擴(kuò)展不僅可幫助您解決疑難問題,而且使您能夠有效地瀏覽代碼并查看運(yùn)行中的報(bào)告服務(wù)器身份驗(yàn)證和授權(quán)進(jìn)程。

Microsoft .NET Framework 提供了多個(gè)可幫助您分析示例代碼的調(diào)試工具。工具的使用效果取決于您試圖完成的任務(wù)。在本指南中,所選的調(diào)試工具是 Visual Studio .NET 2003。

調(diào)試窗體身份驗(yàn)證示例代碼

1.

確保按照以下步驟部署示例。

2.

啟動(dòng) Visual Studio .NET 2003,并打開測(cè)試報(bào)告服務(wù)器上的 CustomSecurity.sln。

3.

打開 Internet Explorer,并導(dǎo)航至 Report Manager,同時(shí)使示例代碼在 Visual Studio 中保持打開狀態(tài)。

4.

導(dǎo)航至 Visual Studio 和自定義安全擴(kuò)展項(xiàng)目,并在代碼中設(shè)置一些斷點(diǎn)。

5.

當(dāng)擴(kuò)展項(xiàng)目仍為活動(dòng)窗口時(shí),單擊“調(diào)試”菜單上的“進(jìn)程”。

“進(jìn)程”對(duì)話框?qū)⒋蜷_。

6.

從進(jìn)程列表中,選擇 aspnet_wp.exe 進(jìn)程(如果您的應(yīng)用程序部署在 IIS 6.0 上,請(qǐng)選擇 w3wp.exe),然后單擊“附加”。當(dāng)“附加到進(jìn)程”對(duì)話框打開時(shí),確保選擇了程序類型“公共語言運(yùn)行庫”,然后單擊“確定”。為提高調(diào)試性能,確保未選擇程序類型“本機(jī)”。

7.

現(xiàn)在,請(qǐng)?jiān)诘卿洿绑w中輸入用戶憑據(jù),然后單擊“登錄”。如果遇到對(duì)應(yīng)于斷點(diǎn)的代碼,調(diào)試程序?qū)⒃诘谝粋€(gè)斷點(diǎn)處停止執(zhí)行。

8.

使用 F11 鍵瀏覽代碼。有關(guān)使用 Visual Studio 進(jìn)行調(diào)試的詳細(xì)信息,請(qǐng)參閱 Visual Studio .NET 文檔。

注意: 以這種方式進(jìn)行調(diào)試需要大量的資源和處理器時(shí)間。如果遇到問題,請(qǐng)關(guān)閉 Visual Studio,重置 IIS,然后通過將 CustomSecurity 解決方案附加到 ASP.NET 工作進(jìn)程并登錄到 Report Manager 來重新開始。

刪除示例擴(kuò)展

盡管通常不建議這么做,但刪除示例后,仍可以恢復(fù)到 Windows Authentication。要恢復(fù)到 Windows 安全,請(qǐng)執(zhí)行下列操作:

?

從備份副本還原下列文件:Web.config、RSReportServer.config 和 RSWebApplication.config。這將把報(bào)告服務(wù)器的身份驗(yàn)證和授權(quán)方法設(shè)置為默認(rèn)的 Windows 安全。這還將刪除您在 Report Server 或 Report Manager 配置文件中為擴(kuò)展輸入的內(nèi)容。

?

在 Internet 信息服務(wù)器 (IIS) 中禁用報(bào)告服務(wù)器虛擬目錄的匿名訪問。

刪除配置信息后,安全擴(kuò)展對(duì)于報(bào)告服務(wù)器將不可用。您不必刪除在示例安全擴(kuò)展下運(yùn)行報(bào)告服務(wù)器時(shí)所創(chuàng)建的任何安全描述符。啟用 Windows Authentication 時(shí),報(bào)告服務(wù)器自動(dòng)將 System Administrator 角色分配給托管報(bào)告服務(wù)器的計(jì)算機(jī)上的 BUILTIN\Administrators 組。不過,您必須為 Windows 用戶重新手動(dòng)應(yīng)用任何基于角色的安全。

通常,在遷移到不同的安全擴(kuò)展后,建議您不要恢復(fù)到 Windows Authentication。否則,當(dāng)您試圖訪問報(bào)告服務(wù)器中的項(xiàng)目時(shí),如果它們具有自定義安全描述符而不具有 Windows Authentication 安全描述符,則可能會(huì)遇到錯(cuò)誤。

結(jié)論

Microsoft SQL Server 2000 Reporting Services 是一個(gè)可用于企業(yè)報(bào)告開發(fā)和部署的可擴(kuò)展報(bào)告平臺(tái)。Reporting Services 包含一個(gè) Windows Authentication 模塊,該模塊使用 Windows 帳戶確保對(duì)報(bào)告服務(wù)器訪問的安全,但在某些情況下,可能需要支持不同安全模塊。為此,Reporting Services 中包含了一組支持創(chuàng)建自定義安全擴(kuò)展的安全擴(kuò)展 API。在所提供的示例中,您已了解了通過窗體身份驗(yàn)證實(shí)現(xiàn)自定義安全的方法。Microsoft 正致力于通過在 Reporting Services 的當(dāng)前版本和后續(xù)版本中提供安全擴(kuò)展性,來滿足企業(yè)中不斷增長(zhǎng)的安全需求。 作為開發(fā)者,您應(yīng)該意識(shí)到實(shí)現(xiàn)自定義安全擴(kuò)展的風(fēng)險(xiǎn),并應(yīng)該謹(jǐn)慎考慮報(bào)告服務(wù)器所用的安全系統(tǒng)是否得到正確實(shí)現(xiàn)和應(yīng)用。

參考資料

有關(guān)詳細(xì)信息,請(qǐng)參閱 MSDN 上的以下資源:

?

How To:Use Forms Authentication with SQL Server 2000 (英文)

?

Forms Authentication Provider (英文)

?

Using Role-Based Security (英文)

?

Microsoft.ReportingServices.Interfaces Namespace (英文)

版本所有

本文檔中包含的信息代表 Microsoft Corporation 在發(fā)布時(shí)對(duì)所討論問題的最新觀點(diǎn)。由于 Microsoft 必須適應(yīng)不斷變化的市場(chǎng)情況,因此,這些信息并非 Microsoft 方面所作的承諾,Microsoft 也不能保證出版日之后提供的任何信息都完全正確。

本白皮書僅供參考。MICROSOFT 對(duì)本文檔中的有關(guān)信息不作任何明示或暗示的擔(dān)保。

用戶有責(zé)任遵從所有適用的版權(quán)法。除了版權(quán)法所賦予的權(quán)利以外,未經(jīng) Microsoft Corporation 明確書面許可,不得擅自將本文檔的任何部分進(jìn)行復(fù)制、存儲(chǔ)或輸入可檢索系統(tǒng),或以任何形式或方式(電子、機(jī)械、影印、錄制或其他方式)進(jìn)行傳播,或用作其他目的。

Microsoft 對(duì)本文檔中的主題持有專利權(quán)、專利申請(qǐng)權(quán)、商標(biāo)權(quán)、版權(quán)或其他相關(guān)的知識(shí)產(chǎn)權(quán)。Microsoft 只提供在任何書面許可協(xié)議中明確規(guī)定的權(quán)利,而不授予您本文檔的上述專利權(quán)、商標(biāo)權(quán)、版權(quán)或其他知識(shí)產(chǎn)權(quán)。

?2004 Microsoft Corporation 版權(quán)所有。保留所有權(quán)利。

Microsoft、Visual Studio 和 Windows 是 Microsoft Corporation 在美國(guó)和/或其他國(guó)家的注冊(cè)商標(biāo)。

此處提到的真實(shí)的公司和產(chǎn)品名稱是其各自所有者的商標(biāo)。

? 2004 Microsoft Corporation 版權(quán)所有。保留所有權(quán)利。使用規(guī)定。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=157847


使用Reporting Services中的窗體身份驗(yàn)證


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!?。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論