我编写的服务在授权机器上的gMSA帐户下运行得很好。我想让它登录到使用RADIUS(针对我们自己的Active Directory)授权用户的第三方硬件设备。
我总是可以专门为此目的创建另一个域帐户并自己管理密码,但这实际上抵消了首先使用gMSA的一些优势。
显然,为了发送自己的凭据,服务需要知道自己的密码 - 但gMSA帐户的主要好处是密码是自动管理的,因此没有人需要跟踪它。而且我知道,事实上,密码通常不会存在于Active Directory中的可检索状态中。
然而 - 当我使用New-ADServiceAccount
在PowerShell中创建新的gMSA时,其中一个选项是-PrincipalsAllowedToRetrieveManagedPassword
。此属性通常指向一个安全组,该安全组具有作为成员的授权使用该服务帐户的那些服务器的计算机帐户。不过,命名法似乎暗示检索在技术上是可行的。
在我考虑这个问题时进一步挖掘,我发现an author comment on this blog描述了流程的复杂性,但我怀疑服务帐户无法实现某些步骤(特别是解构msDS-ManagedPassword blob)
考虑到它,即使我可以获得密码,网络策略服务器(例如)是否能够在RADIUS请求中收到它时验证它?我怀疑这些细节是Server Fault的问题,但是如果我在这里咆哮错误的树,我真的只是想知道。
我碰巧在C#工作,但如果这需要原生Windows API,我不会感到惊讶。
总结: 是否有函数调用(或两个或三个)将检索/重新创建gMSA帐户的当前密码?