Kerberos获得初始凭证

时间:2013-04-22 11:49:28

标签: c kerberos

我尝试为我的应用程序编写Kerberized登录模块,但我有一些概念不清楚。

我正在通过从Apache HTTP服务器读取源代码mod_auth_kerb来学习MIT Kerberos API(找不到更好的起点,没有找到API教程或在线找到的演示代码)。从中我发现我需要通过keytab文件或用户输入密码来获得初始机密。让我感到困惑的是,在登录操作系统时我已经kinit了,而且我确定我已经通过krbtgt/LOCALHOST@LOCALHOST获得了klist校长的票证,然后是否需要我获得最初的机密由krb5_get_init_cred_password/keytab再次保密?

  • 如果是,因为我的操作系统帐户是Kerberos中的有效主体,而我 我得到了TGS的门票,我为什么要得到最初的机密信息 再次?这是否违反了Kerberos的单点登录功能?
  • 如果没有,我怎么能得到校长的票 krbtgt/LOCALHOST@LOCALHOST代码,或者说,我怎么能与我联系 具有相应Kerberos主体的登录帐户?
BTW,网上有没有很好的MIT Kerberos API教程?虽然官方开发人员手册已经完成,但从它开始感觉就像从字典中学习第二种语言:)。

非常感谢和最诚挚的问候!

1 个答案:

答案 0 :(得分:4)

有两件事: 1. kinit是一个实用工具,它在代码中内部使用krb5_get_init_cred_pa​​ssword来获取凭据。 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