Wenn Sie auf die this topic (WCF Security: Getting the password of the user) by Rory Primrose beziehen, erreicht er ähnlich dem, was Sie erkundigt mit einer benutzerdefinierten Validator-Bereitstellung, die wichtige Erweiterung Methode ist 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();
}
}
um diese benutzerdefinierte Dienstanmeldeinformationen verwenden, werden Sie das type-Attribut auf die <ServiceCredentials>
‚s ConfigurationElement
in Ihrer Konfiguration, wie angeben müssen:
<serviceCredentials type="your.assembly.namespace.PasswordServiceCredentials,
your.assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" >
</serviceCredentials>
In ähnlicher Weise könnten Sie dieses Attribut type
programmatisch festlegen, aber ich bin nicht vertraut mit wie.
Danke. Können Sie auch zeigen, wie ich den CustomValidator mit Code spezifiziere? – jgauffin
Noch einmal, ich habe es nicht versucht, aber ServiceCredentials ist nur ein weiteres Service-Verhalten, so dass Sie in der Lage sein sollten, nur eine Instanz von ServiceCredentialsElement zu erstellen, die UserNameAuthentication-Eigenschaften festlegen, CreateBehavior() darauf aufrufen und zum ServiceHost hinzufügen. – tomasr