HOW TO:針對 WCF 驗證服務使用非預設的成員資格提供者
更新:2007 年 11 月
本主題說明當您使用 Windows Communication Foundation (WCF) 來呼叫 ASP.NET 驗證服務時,如何以程式設計方式選取成員資格提供者。根據您在執行階段取得的資訊而定,當您必須使用不同的成員資格提供者來驗證使用者時,您可以使用非預設的成員資格提供者。若要透過非預設的成員資格提供者來進行驗證,您必須為 Authenticating 事件建立事件處理常式。
您必須使用 WCF 做為驗證服務,將使用者從可以傳送與使用 SOAP 1.1 訊息的用戶端應用程式 (例如,Java 應用程式) 登入。用戶端應用程式可以使用與 ASP.NET Web 應用程式相同的使用者認證來驗證使用者。
使用非預設的成員資格提供者來驗證
建立並設定您要使用的成員資格提供者。
如需詳細資訊,請參閱 實作成員資格提供者 和 設定 ASP.NET 應用程式使用成員資格。
在 Global.asax 檔案中,為 Authenticating 事件建立事件處理常式,並加入透過呼叫自訂成員資格提供者驗證使用者認證的程式碼。
下列範例說明 Authenticating 事件的處理常式,此事件會使用名為 ContosoSqlProvider, FabrikamSqlProvider 的提供者或預設的成員資格提供者來驗證認證。使用者認證是根據使用者類型儲存在不同的資料庫中。事件處理常式會根據提供為使用者名稱的電子郵件地址,決定要使用的提供者。
Sub AuthenticationService_Authenticating _ (ByVal sender As Object, _ ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs) If (e.Username.IndexOf("@contoso.com") >= 0) Then e.Authenticated = Membership.Providers("ContosoSqlProvider").ValidateUser(e.Username, e.Password) ElseIf (e.Username.IndexOf("@fabrikam.com") >= 0) Then e.Authenticated = Membership.Providers("FabrikamSqlProvider").ValidateUser(e.Username, e.Password) Else e.Authenticated = Membership.Provider.ValidateUser(e.Username, e.Password) End If e.AuthenticationIsComplete = True End Sub
void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e) { if (e.UserName.IndexOf("@contoso.com") >= 0) { e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password); } else if (e.UserName.IndexOf("@fabrikam.com") >= 0) { e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password); } else { e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password); } e.AuthenticationIsComplete = true; }
在 Global.asax 檔案的 Application_Start 方法中,繫結 Authenticating 事件的事件處理常式。
下列範例說明如何將處理常式繫結到 Authenticating 事件。
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _ AddressOf Me.AuthenticationService_Authenticating End Sub
void Application_Start(object sender, EventArgs e) { System.Web.ApplicationServices.AuthenticationService.Authenticating += new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating); }
從可以讀取與使用 SOAP 1.1 訊息的應用程式呼叫驗證服務。
編譯程式碼
您必須在 Web 伺服器上設定驗證服務,先前的範例才能運作。如需詳細資訊,請參閱 HOW TO:啟用 WCF 驗證服務。
安全性
永遠使用 Secure Sockets Layer (SSL) 以 HTTPS 通訊協定來存取驗證服務。
請參閱
概念
Windows Communication Foundation 驗證服務概觀