gpt4 book ai didi

wcf - WF4 服务和 WIF 集成

转载 作者:行者123 更新时间:2023-12-04 22:04:37 26 4
gpt4 key购买 nike

关于与 Windows Identity Foundation 集成的 Workflow 4.0 服务,是否存在任何人都可以分享的经过验证的模式?我们正在寻找检查 STS token 和声明的最佳方法,以便在工作流服务实例上下文之外派生出用户是谁,并使应用程序的用户对象可用于工作流上下文。

我们希望在 WIF 的服务实现和工作流业务逻辑之间保持关注点分离,以便我们的工作流服务具有高度可测试性。我们已经看到提供的几个示例,这些示例指向使用代码事件包装 Receive 事件,该代码事件实例化 IReceiveMessageCallback 的实现,以便获得对 OperationContext 的引用。 Link to Maurice's Blog Post.但是,这意味着服务内部的事件依赖于操作上下文的存在,甚至可能依赖于 IClaimsIdentity。

到目前为止,我们能想到的最佳解决方案是为服务创建 IDispatchMessageInspector 的实现,该服务询问 token 并创建工作流所需的应用程序用户对象,使它们通过 InstanceContext.Extensions 可用于工作流运行时。这似乎可行,但感觉并不十分可靠。非常感谢任何帮助或反馈!

服务行为

public class SecurityTokenServiceBehavior : IServiceBehavior, IDispatchMessageInspector
{
...
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
var claimsPrincipal = (IClaimsPrincipal)(Thread.CurrentPrincipal is GenericPrincipal ? null : Thread.CurrentPrincipal);

...

instanceContext.Extensions.Add(new SecurityContextExtension(appUser, audit));
return null;
}
...
}

IReceiveMessageCallback

public class SecurityContextCallback : IReceiveMessageCallback
{
[DataMember]
public SecurityContextExtension SecurityContext { get; private set; }

public void OnReceiveMessage(OperationContext operationContext, ExecutionProperties activityExecutionProperties)
{
SecurityContext = operationContext.InstanceContext.Extensions.Find<SecurityContextExtension>();
}
}

最佳答案

你看到了吗this关于使用 ClaimsAuthorizationManager 的博客文章?使用 ClaimsAuthorizationManager 是使用 WIF 时检查授权的常用方法。

参见 Dominick 帖子 here有关如何使用 ClaimsAuthorize 属性或静态 ClaimsAuthorize.CheckAccess() 方法在代码中嵌入检查的一些示例。您可能还想看看 WF 安全包 CTP 1 here .

关于wcf - WF4 服务和 WIF 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com