如何在WCF中使用会话关联进行用户名/密码身份验证?
我问的时候好像找错人了 我需要根据自定义API(在COM中)对用户进行身份验证,并且我需要保持该自定义API(COM对象)处于活动状态(对于该用户)。在针对该定制API进行身份验证的过程中,我可以得到一个列表。我还想将这些用于服务方法的授权 此外,我需要能够远程访问。这是由COM API引发的事件触发的 我有一个自定义UserNamePasswordValidator,但它似乎没有正确设置自定义主体的机制,所以看起来我走错了方向如何在WCF中使用会话关联进行用户名/密码身份验证?,wcf,wcf-security,Wcf,Wcf Security,我问的时候好像找错人了 我需要根据自定义API(在COM中)对用户进行身份验证,并且我需要保持该自定义API(COM对象)处于活动状态(对于该用户)。在针对该定制API进行身份验证的过程中,我可以得到一个列表。我还想将这些用于服务方法的授权 此外,我需要能够远程访问。这是由COM API引发的事件触发的 我有一个自定义UserNamePasswordValidator,但它似乎没有正确设置自定义主体的机制,所以看起来我走错了方向 如何做这三件事?您可以在服务中完全处理身份验证。创建服务合同,类似
如何做这三件事?您可以在服务中完全处理身份验证。创建服务合同,类似于:
[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实例。在登录方法中实现身份验证,并将COM对象存储在本地字段中。当新客户想要使用这种服务时,他必须首先调用Login方法。因此,您的所有实例都将得到正确的身份验证,并且它们将存储COM对象的实例
您还可以将InstanceContext和COM对象注册到某个全局类,该类将处理强制终止服务实例的操作。这可能需要进行一些研究才能使其发挥作用
确保使用一些安全绑定(加密),因为您将以纯文本形式发送用户名和密码。很有用,但是有没有办法使用它来执行基于[PrincipalPermission]的操作?还是必须强制执行?此解决方案不使用基于角色的安全性。如果您想使用基于声明性角色的安全性,您必须深入研究WCF的内部结构,然后再回到自定义授权策略。