在询问this question,this question和this question时,似乎我正在咆哮错误的树。
我需要针对自定义API(在COM中)对用户进行身份验证,并且我需要保持该自定义API(COM对象)处于活动状态(对于该用户)for future WCF calls。在针对该自定义API进行身份验证期间,我可以获取custom-defined roles的列表。我也想用这些来授权服务方法。
此外,我需要能够远程revoke the user's session。这是由COM API引发的事件触发的。
我有一个自定义UserNamePasswordValidator,但似乎没有正确设置自定义主体的机制,所以看起来我正朝着错误的方向前进。
我如何做这三件事?
答案 0 :(得分:0)
您可以在服务中完全处理身份验证。创建类似于以下的服务合同:
[ServiceContract(SessionMode=SessionMode.Required)]
public interface IService
{
// All your operations marked with [OperationContract(IsInitiating=false, IsTerminating=false)]
// Two additional operations
[OperationContract(IsInitiating=true, IsTerminating=false)]
void Login(string user, string password);
[OperationContract(IsInitiating=false, IsTerminating=true)]
void Logout();
}
实施此合同的服务必须具有PerSession实例化。在Login方法中实现身份验证并在本地字段中存储COM对象。当新客户想要使用此类服务时,他必须先调用Login方法。因此,所有实例都将被正确验证,并且它们将存储它们的COM对象实例。
您还可以将InstanceContext和COM对象注册到某个全局类,该类将处理强制终止服务实例。这可能需要一些研究才能使其发挥作用。
确保使用一些安全绑定(加密),因为您将以纯文本形式发送用户名和密码。