HOW TO:自訂來自 WCF 驗證服務的驗證 Cookie
更新:2007 年 11 月
本主題說明在 ASP.NET 驗證服務做為 Windows Communication Foundation (WCF) 服務使用時,如何自訂其驗證 Cookie (票證)。當您想在驗證期間將使用者專屬資料儲存在 Cookie 時,可以自訂驗證 Cookie。
注意事項: |
---|
一般而言,相較於將資料儲存在 Cookie 中,將使用者專屬資料儲存在 ASP.NET 設定檔屬性中是更好的選擇。設定檔屬性資料不會與單一部電腦繫結,或受限於 Cookie 的生命週期。此外,將使用者資料儲存在設定檔屬性中也較為安全。如果您擁有少量非敏感性資料且不想使用 ASP.NET 設定檔功能,那麼自訂 Cookie 內容就非常有用。 |
在驗證使用者認證之後,設定驗證 Cookie 之前,驗證服務會引發 CreatingCookie 事件。自訂 Cookie 的方法是建立 CreatingCookie 的事件處理常式,並自行管理驗證 Cookie。您可以透過傳遞至事件處理常式的 CreatingCookieEventArgs 物件,來存取使用者名稱、密碼及自訂認證。
當您想要從可以傳送與使用 SOAP 1.1 訊息的用戶端應用程式 (例如 Java 應用程式) 登入使用者時,可以使用 WCF 做為驗證服務。
自訂驗證 Cookie
在 Web 應用程式的 Global.asax 檔案中,建立 CreatingCookie 事件的事件處理常式。
在處理常式中,將資訊加入至 Cookie 的 CustomCredential 屬性。
下列範例說明如何藉由將 CustomCredential 屬性值加入至 UserData 屬性來自訂驗證 Cookie。
Sub AuthenticationService_CreatingCookie(ByVal sender As Object, _ ByVal e As System.Web.ApplicationServices.CreatingCookieEventArgs) Dim ticket As FormsAuthenticationTicket = New _ FormsAuthenticationTicket _ (1, _ e.Username, _ DateTime.Now, _ DateTime.Now.AddMinutes(30), _ e.IsPersistent, _ e.CustomCredential, _ FormsAuthentication.FormsCookiePath) Dim encryptedTicket As String = FormsAuthentication.Encrypt(ticket) Dim cookie As HttpCookie = New _ HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) cookie.Expires = DateTime.Now.AddMinutes(30) HttpContext.Current.Response.Cookies.Add(cookie) e.CookieIsSet = True End Sub
void AuthenticationService_CreatingCookie(object sender, System.Web.ApplicationServices.CreatingCookieEventArgs e) { FormsAuthenticationTicket ticket = new FormsAuthenticationTicket (1, e.UserName, DateTime.Now, DateTime.Now.AddMinutes(30), e.IsPersistent, e.CustomCredential, FormsAuthentication.FormsCookiePath); string encryptedTicket = FormsAuthentication.Encrypt(ticket); HttpCookie cookie = new HttpCookie (FormsAuthentication.FormsCookieName, encryptedTicket); cookie.Expires = DateTime.Now.AddMinutes(30); HttpContext.Current.Response.Cookies.Add(cookie); e.CookieIsSet = true; }
在 Global.asax 檔案的 Application_Start 方法中,繫結 CreatingCookie 事件的事件處理常式。
下列範例顯示如何將處理常式繫結至 CreatingCookie 事件。
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) AddHandler System.Web.ApplicationServices.AuthenticationService.CreatingCookie, _ AddressOf Me.AuthenticationService_CreatingCookie End Sub
void Application_Start(object sender, EventArgs e) { System.Web.ApplicationServices.AuthenticationService.CreatingCookie += new EventHandler<System.Web.ApplicationServices.CreatingCookieEventArgs> (AuthenticationService_CreatingCookie); }
從可以使用來自 Web 服務之 SOAP 訊息的應用程式呼叫驗證服務。
編譯程式碼
您必須在 Web 伺服器上設定驗證服務,先前的範例才能運作。如需詳細資訊,請參閱 HOW TO:啟用 WCF 驗證服務。
安全性
傳遞敏感性使用者資料 (如驗證認證) 時,務必透過 Secure Sockets Layer (SSL,藉由使用 HTTPS 通訊協定) 來存取驗證服務。如需設定 SSL 的詳細資訊,請參閱設定 Secure Sockets Layer (IIS 6.0 操作手冊) (英文)。
請參閱
概念
Windows Communication Foundation 驗證服務概觀