我正在开发一个使用Kerberos的服务器服务,并从客户端获取票证,我可以用预定义的keytab解密票证,现在我的问题是如何使用票证中的PAC信息。以前,我使用LDAP过程来查询用户的组成员资格以获取授权信息。
现在PAC的登录信息包括成员身份,但它是组ID,但我需要基于“DN”文本的格式(CN=xxx,OU=xxx,DC=xxx…)。
一般来说,我想知道如何在服务服务器的票证中使用这个授权数据。谢谢!
最佳答案
如果您的应用程序服务没有在Windows上运行,那么您将无法阅读PAC,而不会遇到一些严重的麻烦。PAC是使用微软的专有代码构建的,这是微软根据RFC 1510引入Kerberos风格的东西,但他们的话是“稍加修改”。Shortly after the release of Windows 2000 [Active Directory], Microsoft received some negative press attention because of the proprietary way they used the PAC field in a Kerberos ticket. [Microsoft] explicitly forbids the creation of software that implements the PAC as described in the specifications.
我花了很长时间试图找到一些开源和可靠的东西,可以阅读PAC无论如何,我发现JAASLounge does this。不过,这是一篇老文章(从2010年开始)。请注意,根据我对微软声明的解释,这似乎违反了他们的条款和条件。
不管怎样,我也在这个论坛上为两个帖子加了书签,他们声称已经让JAASLounge完成了这项工作,还有他们必须解决的一些麻烦。
Decrypt kerberos ticket using Spnego
Malformed PAC logon info on new KerberosToken
如果您不想走这条路,并且想绕过PAC来确定AD用户的组成员身份,那么您将不得不求助于对AD域控制器进行LDAP回调。
最后我要说的是,如果您在基于Windows的应用程序服务器(如I is或SharePoint)上运行,PAC的Kerberos解码将自动进行,因此不需要特殊的代码、配置或keytab文件。
关于c - 如何使用Kerberos票证中的PAC信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42235623/