如果您正在考虑 WCF,则可以对 basicHttpBinding 使用 usernameOverTransport 安全性。即用户名和密码位于请求的 SOAP 标头中,所有流量都受到 SSL 在线加密的保护。
自定义 UserNamePasswordValidator 验证器可用于针对例如数据库验证传入凭据。
您可以在服务行为的自定义 IAuthorizationPolicy 中设置线程主体。
例如,评估 IAuthorizationPolicy 的方法实现以设置当前主体
public bool Evaluate(EvaluationContext evaluationContext, ref object state)
{
Object obj;
if( evaluationContext.Properties.TryGetValue( "Identities", out obj ))
{
// get the authenticated identity
IIdentity client = (obj as IList<IIdentity>)[0];
evaluationContext.Properties["Principal"] = ... // create principal obj here for the identity
// this will set thread's current principal
}
return true;
}