我正在尝试使用WebRequests从我的.NET客户端访问Kerberized Hadoop集群REST API。我正在使用ActiveDirectory域中的凭据,该域与Hadoop域有信任关系:
NetworkCredential credentials = new NetworkCredential("user", "password", "ACTIVEDIRECTORY.DOMAIN");
WebRequest request = WebRequest.Create(System.Uri.EscapeUriString(url));
request.Credentials = credentials;
request.Method = "GET";
WebResponse response = await request.GetResponseAsync();
我的工作流程运行正常,因为我看到3条对我的请求的回复:
HTTP/1.1 401 Authentication required
HTTP/1.1 307 TEMPORARY_REDIRECT
HTTP/1.1 200 OK
在我的第二个请求中,我看到一个Kerberos令牌作为单独的安全头发送:
Authorization: Negotiate YIIDXAYGKwYBBQUCoIIDUDCCA...
但这是我的UPN帐户,我想用密钥表而不是密码替换SPN,因为应用程序将充当独立的WCF服务,我不想搞乱Web配置安全容器。
所以我的问题是:
1)在第一次请求后,是否可以使用keytab而不是我的UPN creadentials来生成SPENGO Negotiate令牌?
2)有没有办法在我的WebRequest对象中通过缓存使用已经获得的票证?
3)我的Kerberos令牌是如何生成的?它是由我的用户名 - 密码版本编写的GSSAPI吗?
我试图使用MIT Kerberos Manager utilites,因为那里进展不多。
提前致谢