繁体   English   中英

Workflow Foundation 4-当工作流从延迟活动中恢复时,IPrincipal丢失

[英]Workflow Foundation 4 - IPrincipal lost when workflow resume from a delay activity

我有一个使用业务层(在单独的dll中)的工作流,该业务层使用IPrincipal角色检查权限,因此工作流活动必须在当前线程上设置Principal,然后再在业务层上调用方法。

在延迟活动后恢复工作流时,我遇到了一个问题:角色/ IIdentity丢失了(或更糟的是:错了)。

是否有人对如何处理这种情况有任何想法,并确保在恢复时使用延迟之前的IPrincipal集? 或者您对如何管理工作流程中的角色有任何想法?

谢谢!

我的解决方法是将原始主体存储为工作流变量(在我的案例中为IClaimsPrincipal)。

这有两个优点。

首先,它是持久的,因此如果持久化工作流然后又恢复,则原始主体仍然存在。 这也很重要,因为当工作流恢复时,从中获取主体的原始上下文可能不再可用。

其次(特别是针对工作流服务),它允许我检查通过调用另一个服务操作(基本上是通过关联进行相同的逻辑会话)来继续工作流的委托人是否是启动会话的同一用户(与变量相同的委托人)。

身份验证信息仍可以通过OperationContext.Current.ServiceSecurityContext获得,以下文章可能会有所帮助:

http://zamd.net/2010/07/04/using-wif-with-workflow-services/ http://msmvps.com/blogs/theproblemsolver/archive/2010/09/21/using-the-wcf-从接收活动.aspx操作上下文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM