与排队的用户在不同的进程中运行后台作业

在我们的应用程序中,我们有要在后台运行的Web API排队作业。我们使用HangFire进行作业的后台处理。Web API使用Windows身份验证。Hangfire服务器配置为作为Windows服务运行。

我正在尝试以将队列排队的同一用户的身份执行后台作业。

我尝试传递WindowsIdentity.GetCurrent()(由hangfire序列化并传递),引发的异常是“用于模拟的无效令牌-不能重复”

[HttpGet, Route("enq")]
public IHttpActionResult EnQueue(string country)
{     
    var curUser = System.Security.Principal.WindowsIdentity.GetCurrent();           
    var id = Hangfire.BackgroundJob.Enqueue(() => Services.Common.TestClass.Test(curUser , country));
    return Ok(id);
}

遇到了一种调用WIN32 API方法登录用户的方法但是由于将密码作为输入,因此不确定如何使用它。

以排队的同一用户身份执行后台作业的任何方法?

可能的解决方案:

  1. 使用Win32 API调用。缺点是,此方法需要用户密码。在下面的SO问题中有更多详细信息。

Windows模拟和复制令牌

  1. 使用Kerberos扩展“用户登录服务”

https://blogs.msdn.microsoft.com/winsdk/2015/08/28/logon-as-a-user-without-a-password/

var upn = System.DirectoryServices.AccountManagement.UserPrincipal.Current.UserPrincipalName;
WindowsIdentity s4u = new WindowsIdentity(upn);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中运行后台进程

来自分类Dev

在C中后台运行进程

来自分类Dev

在Android中后台运行进程

来自分类Dev

永久在PHP中运行后台进程

来自分类Dev

在后台python中运行GPIO进程

来自分类Dev

无法从后台运行的进程中读取 STDOut

来自分类Dev

makefile运行的进程不在“作业”列表中

来自分类Dev

在C中打印后台进程列表的功能(如作业)?

来自分类Dev

从Gradle运行后台作业

来自分类Dev

在Rails中运行大量长时间运行的后台作业

来自分类Dev

删除Laravel中的排队作业

来自分类Dev

后台进程未运行?

来自分类Dev

为什么`jobs`和`dirs`在命令替换,进程替换,管道和后台作业中运行的结果与原始Shell中的输出相同?

来自分类Dev

如何在Linux中运行多个后台作业?

来自分类Dev

如何确定有多少后台进程在 bash 中运行并对每个后台进程进行“等待”?

来自分类Dev

以不同用户身份在 ASP.NET 中运行 PSEXEC 进程

来自分类Dev

Hangfire:从关键区域内排队后台作业

来自分类Dev

在后台运行PHPExcel作业

来自分类Dev

在后台运行PHPExcel作业

来自分类Dev

perl运行后台作业并强制完成作业?

来自分类Dev

使用用户输入运行脚本,然后断开作业并在后台运行

来自分类Dev

在Python中运行后台进程,不要等待

来自分类Dev

如何在Spring MVC框架中运行后台进程

来自分类Dev

检测Tcl脚本是否在后台进程中运行

来自分类Dev

如何在Android中反复运行后台进程

来自分类Dev

.bat文件以在Windows中运行和停止后台进程

来自分类Dev

如何在Windows后台在Apache中运行httpd守护进程?

来自分类Dev

在进程运行后台时在 kivy 中显示某些内容

来自分类Dev

Powershell:捕获后台作业的进程ID

Related 相关文章

热门标签

归档