在自定义SecurityTokenAuthenticator实现中访问WCF端点服务类型

时间:2014-02-04 04:57:55

标签: c# wcf web-services authentication operationcontext

我们需要在WCF服务中使用身份验证/授权服务。我已经实现了自定义客户端/服务凭证,以及相应的令牌和支持类。除了一件事,一切都有效。

部分要求是我们可以在服务方法上定义授权角色(通过属性),这些角色将与用户信息一起发送到auth服务,该服务响应成功/失败消息。 / p>

我尝试实施以下内容:

DispatchOperation operation = OperationContext.Current.EndpointDispatcher.DispatchRuntime.Operations.FirstOrDefault(o => o.Action == action);
if (operation != default(DispatchOperation))
{
    Type hostType = OperationContext.Current.Host.Description.ServiceType;
    MethodInfo method = hostType.GetMethod(operation.Name);

    RegistryAuthGroupAttribute authGroupAttribute = (RegistryAuthGroupAttribute)method.GetCustomAttribute(typeof(RegistryAuthGroupAttribute));
    if (authGroupAttribute != null)
    {
        return authGroupAttribute.AuthGroup;
    }
}

如果OperationContext.Current并非总是为null,那么这将是非常好的(发现它直到认证发生后才会被填充。

在身份验证阶段/之前,我是否有其他选项可以获取目标端点的ServiceType?我想过使用消息拦截器,但我不确定如何使用xml指定端点并使用它来查找ServiceType。

0 个答案:

没有答案