您提供的2個選項不是互斥的,用戶名/密碼驗證是一個消息驗證機制。其目的是爲發送消息的用戶提供憑據。
TransportWithMessageCredential是一種傳輸級別的加密方式,例如您使用SSL對傳輸級別進行加密,並將消息中的用戶憑證嵌入其中。
成員&角色提供者是用於驗證用戶傳遞的憑據的方式,它看起來像這樣。
<serviceBehaviors>
<behavior name="myCustomBehavior">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="MembershipProvider" />
</serviceCredentials>
</behavior>
</servicebehaviors>
<system.web>
<membership defaultProvider="MembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add name="MembershipProvider" type="MyApp.AP.SimpleSqlMembershipProvider, MyApp.AP" connectionStringName="APServer" applicationName="/MyApp" />
</providers>
</membership>
</system.web>
現在你可能會使用自定義的用戶名密碼驗證,看起來像這樣
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType=
"MyApp.SL.CustomUserNameValidator, MyApp.SL"/>
因此,使用用戶名/密碼在消息層的認證是使用不同的(和獨立)用戶名/密碼作爲認證機制。希望這有助於你理解概念
感謝您的精彩總結!我已經實施了第二種方案,因此我現在堅持這一點,但對未來很瞭解。 – 2010-01-18 19:54:43