我们需要在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。