我想制作一个使用gss-api / kerberos进行流量授权的程序。到目前为止,我可以联系SSOS并获得服务票。如果用户没有TGT,我会在代码中执行类似于kinit的操作。
我的代码以用户在其缓存中同时具有TGT和服务票据结束。以下方法将读取服务器发送的令牌。
majorStatus = gss_unwrap (&minorStatus,
inContext,
&inputBuffer,
&outputBuffer,
&encrypted,
NULL;
现在outputBuffer是empy。我的意思是,我自己并没有传递任何东西。我应该吗?
我想联系另一台将检查我的机票的服务器(服务),如果有效则允许我通过他发送流量。
使用GSSAPI我如何验证这样的事情?我知道诸如wrap / unwrap之类的方法。服务会话密钥存储在客户端中的哪个位置?我在服务服务器上收到票后如何验证它?
如果我混淆了一些概念,我很抱歉,但这是我第一次使用这么复杂的API。
提前致谢...
答案 0 :(得分:0)
I want to contact another server(the service) who will check my ticket and if valid allow me to send traffic through him.
您在服务端使用GSS-API函数init_security_context(在客户端)和accept_security_context()。有关信息,请参阅http://web.mit.edu/kerberos/krb5-devel/doc/appdev/gssapi.html,也可以在线查看一些示例(http://docs.oracle.com/cd/E19683-01/816-1331/sampleprogs-1/index.html)
使用GSS,您实际上并未触及门票。使用这些功能,您可以在客户端和服务之间建立安全连接(这些功能使用故障单,ofc),然后您就可以继续。