六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ASP.NET2.0應用中定制安全憑證之實戰篇

[摘要]一、方案架構   本方案架構很簡單——它用一個Web服務來包裝ASP.NET 2.0提供者并且為遠程客戶暴露該憑證管理,你甚至還能在該架構中加上一些失去的功能。然后,在提供一個豐富的用戶接口和全面憑證管理經驗的同時,使用一個Windows表單應用程序來消費該Web服務。該Web服務配置文件將包含特...
一、方案架構

  本方案架構很簡單——它用一個Web服務來包裝ASP.NET 2.0提供者并且為遠程客戶暴露該憑證管理,你甚至還能在該架構中加上一些失去的功能。然后,在提供一個豐富的用戶接口和全面憑證管理經驗的同時,使用一個Windows表單應用程序來消費該Web服務。該Web服務配置文件將包含特定于該憑證存儲的指令。然而,這的確意味著所有由該Web服務管理的應用程序都將可以共享這些指令。

  盡管你能夠從頭到尾地構建該Web服務,也就是說,首先用靜態方法Roles和Membership來包裝它們并定義該Web服務,我卻更喜歡一種契約驅動的方法:首先設計執行各種操作的最好接口將是什么,并且直到需要時才考慮怎樣實現它們。這樣做可以確保由Web服務暴露的接口支持所有要求的管理功能并且還將減少該客戶應用程序與任何實現細節(例如包裝提供者)之間的耦合。

  ASP.NET 2.0的一個更好的特點是它支持Web服務接口,你可以定義并且讓該Web服務暴露邏輯接口,就象類的表現一樣。為此,你需要用WebServiceBinding屬性修飾你的接口并且經由WebMethod屬性來暴露單個的接口方法。然后,你將有一個派生于這個接口的類并實現該接口,而且編譯器將要求你支持該接口的所有方法。

  為了管理和交互于憑證存儲和Web服務配置,我定義了5個接口-IApplicationManager,IMembershipManager,IPasswordManager,IroleManager和IUserManager。

  (一) IApplicationManager

  該IApplicationManager接口顯示于所附源碼中的列表2,允許管理員刪除一指定的應用程序-也就是說,從數據庫中刪除所有到它的參考并且刪除它的所有用戶和角色。IApplicationManager允許從存儲中刪除所有的應用程序,并且它能返回在該存儲中的所有應用程序的一個列表。注意,這個接口作為一個內部的接口被定義-public或internal可見性修飾詞對Web服務接口都是無意義的。該接口上的每個方法用WebMethod屬性加以修飾并有一個該方法的簡短描述。此外,存取憑證存儲的所有方法都被設置為使用事務處理。這樣以來,兩種操作-如刪除一應用程序和創建一用戶將在彼此完全隔離的情況下執行,從而保證了如刪除所有用戶等復雜操作的原子性。.NET 2.0中的Web服務只能啟動一個新事務,而且它是由WebMethod屬性的TransactionOption屬性來控制的。最后一點是把WebServiceBinding屬性應用于接口上。這就指定該接口是一個客戶和服務都能綁定到的Web服務接口。為了把該接口以一個WSDL契約方式暴露給外界,你需要使用一個shim類。這個shim類的設計是必要的,因為你不能把一個接口作為一Web服務暴露,而且你也不能在其上應用WebService屬性。這個shim類還將經由WebService屬性為該接口命名空間定義。下面的代碼顯示了IApplicationManagerShim抽象類的定義。

[WebService(Name="IApplicationManager",
Namespace="http://CredentialsServices",
Description="IApplicationManager is used to manage 
applications. This web service is only 
the definition of the interface. You 
cannot invoke method calls on it.")]
abstract class IApplicationManagerShim : IApplicationManager{
 public abstract void DeleteApplication(string application);
 public abstract string[] GetApplications();
 public abstract void DeleteAllApplications();

  因為IApplicationManagerShim是一個類,所以你可以把它暴露為一個Web服務。因為它是一抽象類且所有方法被定義為抽象方法,所以不需要(也不能)實現任何方法。為了使其看起來就象該接口,IapplicationManagerShim把WebService屬性的屬性名設置為IApplicationManager(代替缺省的類名)。現在,你可以使用IApplicationManager.asmx文件來暴露該接口。 

<%@ WebService Language="C#" 
CodeBehind="~/App_Code/IApplicationManagerShim.cs"
Class="IApplicationManagerShim"%>
  現在,如果你瀏覽到IApplicationManager.asmx頁面,你就會看到該接口定義。你可以使用WSDL.exe的serverInterface選項來把接口定義輸入到客戶端或任何其它想綁定到該接口定義上的服務。

  (二) IMembershipManager

  IMembershipManager接口(見所附源碼中的列表3)允許你管理用戶帳戶的所有方面-創建和刪除用戶帳戶,更新用戶帳戶,檢索用戶帳戶細節以及檢索在一應用程序中的所有用戶。

  (三) IRoleManager

  IRoleManager接口允許你管理邏輯角色的所有方面-創建和刪除角色,從角色中增加和刪除用戶以及檢索在一應用程序中的所有角色。

[WebServiceBinding("IRoleManager")]
interface IRoleManager{
[WebMethod(...)]
void CreateRole(string application,string role);
[WebMethod(...)]
bool DeleteRole(string application,string role,bool throwOnPopulatedRole);
[WebMethod(...)]
void AddUserToRole(string application,string userName, string role);
[WebMethod(...)]
void DeleteAllRoles(string application,bool throwOnPopulatedRole);
[WebMethod(...)]
string[] GetAllRoles(string application);
[WebMethod(...)]
string[] GetRolesForUser(string application,string userName);
[WebMethod(...)]
string[] GetUsersInRole(string application, string role);
[WebMethod(...)]
void RemoveUserFromRole(string application,string userName, string roleName);
//更多成員
}
  (四) IPasswordManager

  這個IPasswordManager接口主要提供與應用程序口令策略相關的只讀信息。

[WebServiceBinding("IPasswordManager")]
interface IPasswordManager{
[WebMethod(...)]
bool EnablePasswordReset(string application);
[WebMethod(...)]
bool EnablePasswordRetrieval(string application);
[WebMethod(...)]
string GeneratePassword(string application,int length,
int numberOfNonAlphanumericCharacters);
[WebMethod(...)]
bool RequiresQuestionAndAnswer(string application);
[WebMethod(...)]
string ResetPassword(string application,string userName);
[WebMethod(...)]
string GetPassword(string application,string userName,string passwordAnswer);
[WebMethod(...)]
void ChangePassword(string application,string userName,string newPassword);
//更多成員

  典型地,該策略存儲在應用程序的配置文件中。該策略包括是否啟動口令重置和檢索,口令強度和口令回答策略等。你也可以使用IpasswordManager來生成一相應于該口令強度策略的新口令。另外,IpasswordManager可用于重置、改變或檢索一指定用戶的口令。

  (五) IUserManager

  IUserManager接口允許校驗用戶憑證,檢索角色身份以及獲取指定用戶是其成員之一的所有角色。該接口用于測試和分析目的。 

[WebServiceBinding("IUserManager")]
public interface IUserManager{
[WebMethod(...)]
bool Authenticate(string applicationName,string userName, string password);
[WebMethod(...)]
bool IsInRole(string applicationName,string userName, string role);
[WebMethod(...)]
string[] GetRoles(string applicationName,string userName);
}

[1] [2] [3]  下一頁




主站蜘蛛池模板: 青青草视频免费在线 | 亚洲va中文字幕无码 | 性网站免费 | 欧美特黄a级高清免费看片 欧美特黄a级高清免费大片 | 日韩视频免费在线观看 | 婷婷激情六月 | 欧美一区二区亚洲 | 天天做天天爱夜夜爽 | 日本高清在线观看视频 | 欧美综合一区二区三区 | 日日碰日日摸日日澡视频播放 | 五月天伊人 | 伊人影院视频 | 在线播放精品一区二区啪视频 | 香蕉视频一级 | 中文字幕波多野结衣免费视频 | 亚洲欧美视频在线播放 | 青青草国产免费久久久91 | 中文字幕无码中文字幕有码 | 欧美在线视频a | 四虎影院精品在线观看 | 色拍拍综合网 | 日韩毛片免费视频 | 偷偷操不一样的久久 | 伊人五月婷 | 综合久久久久久久 | 日韩精品一区二区三区高清 | 日本免费高清视频 | 日韩精品一区二区三区中文版 | 又大又爽又粗免费视频 | 亚洲欧美一区二区三区麻豆 | 亚洲国产第一 | 日本a天堂 | 在线国产二区 | 日日天天夜夜 | 尹人久久久香蕉精品 | 欧美在线观看一区二区三 | 亚洲欧美自拍另类图片色 | 亚洲精品视频在线观看你懂的 | 最新日韩精品 | 日韩视频观看 |