我尝试为我的应用程序编写Kerberized登录模块,但我有一些概念不清楚。
我正在通过从Apache HTTP服务器读取源代码mod_auth_kerb
来学习MIT Kerberos API(找不到更好的起点,没有找到API教程或在线找到的演示代码)。从中我发现我需要通过keytab文件或用户输入密码来获得初始机密。让我感到困惑的是,在登录操作系统时我已经kinit
了,而且我确定我已经通过krbtgt/LOCALHOST@LOCALHOST
获得了klist
校长的票证,然后是否需要我获得最初的机密由krb5_get_init_cred_password/keytab
再次保密?
krbtgt/LOCALHOST@LOCALHOST
代码,或者说,我怎么能与我联系
具有相应Kerberos主体的登录帐户?非常感谢和最诚挚的问候!
答案 0 :(得分:4)
有两件事: 1. kinit是一个实用工具,它在代码中内部使用krb5_get_init_cred_password来获取凭据。 2.然后,您可以使用kvno实用程序来使用使用kinit获取的票证来获取服务票证。 例如:
kinit -f adminitrator@XYZ.COM
通过这个你将得到管理员的票。现在,如果您想将此票证用于某些服务,请说CIFS。
kvno [-k <keytab file> | -c <credential cache>] -u <client> -P service
您可以使用凭证缓存或可以使用ktutil实用程序创建的密钥表文件。
其次,如果你想控制代码中的所有内容,你需要了解krb api和函数,如:
krb5_get_init_creds_password
kerb_get_credentials
krb5_get_crendentials_for_user
krb5_get_crendentials_for_proxy 等。
您可以从MIT kerberos库中查看kinit和kvno的源代码,以便更好地了解这些函数的使用方式等。
ANKUR