Если вы обратитесь к этой теме (WCF Security: Получение пароля пользователя) Рори Примроуза , он достигнет того же, о чем вы спрашиваете, предоставив специальный валидатор, важное расширениеметод CreateSecurityTokenManager
:
public class PasswordServiceCredentials : ServiceCredentials
{
public PasswordServiceCredentials()
{
}
private PasswordServiceCredentials(PasswordServiceCredentials clone)
: base(clone)
{
}
protected override ServiceCredentials CloneCore()
{
return new PasswordServiceCredentials(this);
}
public override SecurityTokenManager CreateSecurityTokenManager()
{
// Check if the current validation mode is for custom username password validation
if (UserNameAuthentication.UserNamePasswordValidationMode == UserNamePasswordValidationMode.Custom)
{
return new PasswordSecurityTokenManager(this);
}
Trace.TraceWarning(Resources.CustomUserNamePasswordValidationNotEnabled);
return base.CreateSecurityTokenManager();
}
}
Чтобы использовать эти учетные данные пользовательского сервиса, вам нужно будет указать атрибут type для <ServiceCredentials>
s ConfigurationElement
в вашей конфигурации, например:
<serviceCredentials type="your.assembly.namespace.PasswordServiceCredentials,
your.assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" >
</serviceCredentials>
Аналогично, вы можете установить этот атрибут type
программно, но я не знаю, как.