问题标签 [gssapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - GSS-API Java 奇怪的错误
我正在运行以下教程:http: //download.oracle.com/javase/6/docs/technotes/guides/security/jgss/tutorials/BasicClientServer.html
我收到以下提示:
我收到以下错误:
你能确定这件事的根本原因吗?
java - 用于 java gss-api 的 Kerbtray 领域和 kdc
我在 Win7 上使用 kerbtray.exe。
我如何确切知道 java gss-api 登录的领域和 kdc 是什么?
c - GSS-API 错误接受上下文:服务密钥不可用 - Solaris 代码、Windows KDC
我正在尝试获取一个针对 Active Directory 工作的测试 Kerberos 客户端/服务器对。我在公司网络的备用域中创建了三个用户,“RichardC”、“Server1”和“Server2”。我的服务器用户已映射到不同的服务主体名称,一个使用 KRB5_NT_PRINCIPAL,另一个使用 KRB5_NT_SRV_HOST。
这次我没有使用 +DesOnly 选项,希望在今天的系统中我不需要 DES。在这个问题中,我已将真实域名替换为 mydomain 以避免管理问题。
这给了我一个密钥表。我可以列出它:
我什至可以使用 kinit -k 使用密钥表中的密钥登录 - 所以它似乎工作。
我有我自己的测试程序,并且没有来自http://download.oracle.com/docs/cd/E19683-01/816-1331/sampleprogs-1/index.html的测试程序。在该程序中,在服务器上,我使用两个 keytab 将 GSS_C_NT_HOSTBASED_SERVICE 更改为 GSS_C_NT_USER_NAME 以使其识别名称。我正在运行 Oracle 演示服务器
和客户
结果:
在这种情况下和我自己的测试代码中,错误发生在客户端发送其第一个令牌之后,而服务器正在尝试对其进行解码。
klist 显示授予客户端的密钥。它正在使用 ArcFour,它位于 keytab 中
可以想象,UNIX 机器(塞尔维亚)可能属于另一个领域(我在这里称为 mydomain.com),尽管它似乎没有设置 Kerberos。我正在使用指向 BENCHMARKING.RDDEV.LOCAL 领域的本地 krb5.conf 文件,但如果机器尝试使用带有其主机名的 DNS,它可能会得到错误的答案。我的 krb5.conf 有
看起来像 default_tkt_types 之类的选项无效。
问题是 - 我该如何解决我的错误?
谢谢 - 理查德
c - 出于某种原因,当我链接到 Oracle GSS 时开始表现不同(Solaris)
我的测试程序运行良好。我可以创建一个客户端和一个服务器并将它们相互运行。我可以设置我的 KRB5_CONFIG 环境变量并使用本地配置进行测试。
出于某种原因,当我将代码放在我们的生产软件中时,它失败了。即使我将 main() 函数剥离为仅使用硬编码名称调用 gss_import_name() ,我最终也会收到消息“无法打开配置文件”。
如果我运行 truss,那么我会看到很多 Oracle 正在运行。它尝试打开许多不同的 Oracle 跟踪文件。它也试图打开
而不是我指定的文件。
就好像 Oracle 给了我们错误的 gss,或者我们庞大而复杂的构建系统中的其他选项。我注意到 -L/usr/lib/sparcv9 虽然这是在我的 -lgss 之后,如果这很重要的话(因为我经常在 C 中工作太久了!)。该目录中的 libgss.so.1 比 /usr/lib 中的大 - 尽管将该选项放入我的测试程序的链接命令中并不会破坏它。
有什么帮助吗?
谢谢 - 理查德
java - 填充 LoginContext
无论如何我可以填充一个 LoginContext 而不是使用回调处理程序?我的程序将收到用户名和密码(callbakchandler 处理的内容),我想使用它们而不是手动输入信息。
有没有办法做到这一点?
java - 将在 Java 中获得的 TGT 用于 SSH/其他应用程序
目前,我能够通过使用 JAAS 并获取从运行 Active Directory 的 Windows 服务器发送的票证授予票证来验证 Java 应用程序中的用户。这很容易用Krb5LoginModule
in java 完成。
现在我想从我的 java 应用程序运行一个 ssh 命令并使用我的 TGT 来启用 ssh 不询问密码。我看过一些让 ssh 与 kerberos 一起工作的教程( OpenSSH 和 Kerberoskinit
),但它们用于获取他们的 TGT,并且票证存储在 /tmp/krbcc_XXX 中。然后在生成票证后,他们可以自由地 ssh。
我可以将 TGT 写入磁盘并将其存储在 /tmp/krbcc_XXX 中,或者我可以在 a 中运行 ssh 命令PrivilegedAction
,但是我不知道是否可以工作。有没有公认的方法来做到这一点?
基本上,我想打电话给这样的东西,它不会要求我输入密码:
python - 如何使用 python suds 客户端进行 kerberos 身份验证
我有一个基于 Windows 的 Web 服务,它执行证书吊销。它提供了一个 WSDL 文件,我希望 pythonsuds
包使用它来允许我撤销证书。
该服务通过 Kerberos/GSSAPI 进行保护,因此有一个 keytab 文件来提供凭据。如何告诉suds
客户端使用 keytab 文件向 Web 服务提供凭据?
换句话说,我想做这样的事情:
sasl - SASL 与 gssapi
我正在做一个涉及身份验证的项目,但我不太了解 SASL 和 gssapi 之间的区别。gssapi 是否在 SASL 的掩护下使用?我可以在没有 SASL 的情况下使用 gssapi 吗?正确的做法是什么?
如果我使用 libsasl,是否需要与 libgssapi_* 链接?
谢谢。
java - Java GSSAPI:比较两个 GSSCredential 实例
我的代码目前可以很好地为我的网站用户执行 SPNEGO (Kerberos) 身份验证。我有一个特殊的缓存机制来加速一些基于用户身份确认的决策。对于普通密码身份验证,这很简单——将“当前”用户+密码组合与“旧”组合进行比较——如果没有变化,仍然可以缓存决策。否则,他们需要重新评估。
我正在尝试为 Kerberos 做同样的事情。我已经让它大部分工作了,但我很困惑为什么GSSCredential.equals()
不能工作。特别是,我在验证每个请求后获得的 GSSCredential 实例是“相同的”,因为它们是针对同一个用户、相同的服务,甚至是在相同的情况下获得的(我认为)。如果我做 atoString()
并且比较输出它们是相同的(是的,我知道这无关紧要,但这仍然很好地表明它们可能应该相等)。
但是,GSSCredential_1.equals(GSSCredential_2)
在请求之间总是返回 false。这可能是因为每个都是使用不同的 SPNEGO 票证获得的(根据 Kerberos,这是必要的,以避免重播场景),但这些票证仍然属于同一个主体,并且“针对”同一个服务主体。
我需要做出的代码决策最好这样表述:
这些新凭证是否代表与以前使用的相同的安全主体?到期、目的有效性和其他问题单独评估,然后再评估。
比较他们的名字“有效”,但我希望有一些更强大的东西。
有任何想法吗?