【问题标题】:Kerberos credential delegation via urlconnect?通过 urlconnect 进行 Kerberos 凭证委托?
【发布时间】:2013-02-27 09:43:26
【问题描述】:

我正在尝试建立一个基于 tomcat 的中间服务器,它将从 java 客户端获取委托票证并转发到 tomcat 服务器/java 服务器。

我有一个处理委托票证的 tomcat servlet。我的问题在于客户

http://mydomain.example.com/examples/ 受到远程机器上的 tomcat 实例的保护。为了登录,我使用了:-

网址 url = 新网址("http://mydomain.example.com:8080/examples/"); InputStream ins = url.openConnection().getInputStream(); 然后将流重定向到缓冲阅读器。

但是此方法不适用于委托凭证情况。

urlconnection 对象中是否有标志或设置?是否有另一个类(除了 SpnegoHttpURLConnection 可以实现这个?)

【问题讨论】:

    标签: java http kerberos


    【解决方案1】:

    使用Subject.doAs,您的URLConnection 将在您的委托凭证的安全上下文中运行。

    【讨论】:

    • 所以这意味着我将不得不手动创建一个主题并填充它,而且我必须编写一个像 Subject.doAs(mysubname, url.openconnection.getinputstream()) 这样的函数?如果我弄错了,请您纠正我的方法
    • 是的,没错。将GSSCredential 添加到Subject 实例的私有凭据集中。但是你不能简单地将 getInputStream 作为一个参数,你必须写一个PrivilegedAction
    • 好的,最后一个问题。当我向主题实例的私有凭据集添加 gsscredential 时,我需要启用一些委托标志/变量。但这只能由 gsscontext 对象完成。此外,javadoc 指出我无法检索 delegcred(context.getDelegCred()),直到我在接受方。那么,在我将 gsscred 添加到私有 cred 集之前,有没有办法在客户端以某种方式启用委托? P.S - 我在客户端运行 urlconnect 代码
    • 等一下,你的问题似乎还不够清楚。我假设您是想要使用委托凭证来模拟客户端的服务器。如果您来自发起者站点,您可能需要查看:Java 7Java 6。请注意,如果您的服务器不受委派信任,您将不会收到任何
    • 没关系,我让它工作了。我在客户端使用了 URLConnect 调用,并且完全按照您之前所说的进行了操作。我不知道它是如何工作的。我什至没有接触中间或最终服务器的代码。它们是由我组织中的其他人制作的。我的测试方式是检查最终服务器中的客户端名称。我将我的 urlconnect 和 display 调用包装在一个特权操作中,并使用带有 krb5 登录模块的 logincontext 调用填充主题。我不明白代表团标志的具体设置位置是什么?委托中间服务器受信任
    猜你喜欢
    • 2013-01-11
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多