Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以通过编程方式检索组管理的服务帐户的密码?_C#_Winapi_Active Directory_Password Recovery - Fatal编程技术网

C# 是否可以通过编程方式检索组管理的服务帐户的密码?

C# 是否可以通过编程方式检索组管理的服务帐户的密码?,c#,winapi,active-directory,password-recovery,C#,Winapi,Active Directory,Password Recovery,我已经编写了一个服务,在授权机器上的gMSA帐户下运行良好。我想让它登录到使用RADIUS(针对我们自己的Active Directory)授权用户的第三方硬件设备 我总是可以专门为此创建另一个域帐户,并自己管理密码,但这实际上否定了gMSA的一些优势 显然,为了发送自己的凭证,服务需要知道自己的密码——但gMSA帐户的主要好处是密码是自动管理的,因此没有人需要跟踪它。我知道,事实上,在Active Directory中,密码通常不会以可检索状态存在 然而,当我在PowerShell中使用新建A

我已经编写了一个服务,在授权机器上的gMSA帐户下运行良好。我想让它登录到使用RADIUS(针对我们自己的Active Directory)授权用户的第三方硬件设备

我总是可以专门为此创建另一个域帐户,并自己管理密码,但这实际上否定了gMSA的一些优势

显然,为了发送自己的凭证,服务需要知道自己的密码——但gMSA帐户的主要好处是密码是自动管理的,因此没有人需要跟踪它。我知道,事实上,在Active Directory中,密码通常不会以可检索状态存在

然而,当我在PowerShell中使用
新建ADServiceAccount
创建一个新的gMSA时,其中一个选项是
-PrincipalsAllowedToRetrieveManagedPassword
。此属性通常指向一个安全组,该安全组作为成员拥有授权使用服务帐户的服务器的计算机帐户。尽管如此,该术语似乎暗示了检索在技术上是可能的

当我进一步思考这个问题时,我发现描述了流程的复杂性,但我怀疑对于服务帐户来说,某些步骤(特别是解构)是无法实现的

想一想,即使我可以获得密码,网络策略服务器(例如)在RADIUS请求中收到密码时是否能够验证密码?我怀疑这些细节是有问题的,但我真的只是想大声说出来,我是不是找错人了

我碰巧在C#中工作,但如果这需要本机Windows API,我也不会感到惊讶

总而言之:
是否有一个函数调用(或两个或三个)可以检索/重新创建gMSA帐户的当前密码?

我猜没有,但您应该可以使用一个。当服务启动时,凭证管理器将收到用户名和密码。您可以将其保存到一个文件中(最好是加密的),服务可以在其中读取它。(您可能还需要一些机制在密码更改时向服务发出信号,我不确定这是如何工作的。)