使用GSSAPI支持多进程的kerberos约束委派

时间:2018-09-24 15:03:38

标签: gssapi kerberos-delegation

我曾问过一个类似的问题,即如何使用SSPI为多进程支持Kerberos约束委派,并且得到了一个很好的答案: support kerberos constrained delegation using SSPI for multiprocess

由于我们的服务器需要支持多个平台(Windows,Linux,MacOS),因此我们还需要使用GSSAPI支持相同的平台。

同样,这里是背景信息:我们的C ++ HTTP服务器具有一个主进程和一个辅助进程。这两个进程都在同一台计算机上运行并使用相同的服务帐户,并且每个客户端请求可以来自不同的用户。主进程可以使用gss_acquire_cred和gss_accept_sec_context处理SPNEGO和Kerberos身份验证,但是它不知道需要委派哪个资源,只有工作进程才知道。我们如何将客户的凭据/安全上下文转发给工作人员,以便工作人员可以进行委派?

再次,一种不太安全的解决方案是:在主服务器中,gss_accept_sec_context成功后,调用gss_display_name以获取客户端UPN(用户主体名称);将UPN从主人转移到工人;在工作程序中,使用UPN调用gss_acquire_cred_impersonate_name以获取委托的凭证句柄,然后使用委托的凭证句柄调用gss_init_sec_context。但是,由于UPN很容易伪造,因此,我们尽可能避免这种解决方案。

使用GSSAPI进行约束委派的另一种方法是:使用GSS_C_BOTH调用gss_acquire_cred,然后调用gss_accept_sec_context获取委派的凭据句柄,然后使用委派的凭据句柄调用gss_init_sec_context。如果只有一个流程,这应该会很好地工作,但是我不确定要使两个流程都可以执行此工作的额外步骤。

任何建议都值得赞赏。

0 个答案:

没有答案