我的本地电脑使用Windows 7 Pro,属于realm LR,由AD服务器管理。我在连接到该领域的网络时登录到我的计算机。我可以使用 MIT Kerberos for Windows ver 查看 TGT。4.0.1。
我想访问国外领域的资源,FR。LR 和 FR 之间没有 Kerberos 信任,但它们允许彼此之间的 TCP 流量。我为其 KDC(Red Hat IdM / FreeIPA)请求了 FR 的 TGT,并在受到挑战时成功输入了我的密码。同样,我可以使用 MIT Kerberos for Windows ver 查看 TGT。4.0.1。尽管来自 LR,但我现在可以通过 SSH 访问 FR 中的资源而无需输入密码。
问题是当我获得 FR 的 TGT 时,我的 LR 主体的 TGT 消失了。在 MIT Kerberos 中只有 FR TGT 可见。如果我锁定我的计算机,然后用我的密码解锁,现在 FR TGT 不见了,取而代之的是新的 LR TGT。
似乎 MIT Kerberos for Windows 一次只能存储一个 TGT。每个 TGT 完全适用于其领域的所有意图和目的。如何配置 MIT Kerberos 以让我一次拥有两个 TGT,每个领域一个?是否可以“划分”多个客户端实例,每个实例指向不同的 KRB5_CONFIG 和本地密钥表?如果我不能,是否有客户端 Kerberos 5 的替代 Windows 实现,即使没有域间信任?
PS - 我不想要信任。无法获得信任。
更新:我之前省略了其中的一些细节,因为我认为这可能会混淆问题。但根据布拉德的回答,这可能是有道理的。我希望大多数本地软件会使用 Kerberos 的内置 Windows 实现并始终使用 LR 密钥表。
但是,像我这样的高级用户使用 Cygwin 下的 heimdal SSH 到 FR。我希望通过 Cygwin DLL 的任何东西都使用 heimdal 并且永远不会看到 LR TGT(它没有,至少在默认情况下没有)。我明确地 kinit 并继续前进。
棘手的部分是我必须支持的非高级用户,他们不使用 Cygwin 但确实使用 PuTTY。PuTTY 确实允许您指定要使用 GSSAPI 实现的库路径和 DLL。例如,我正在配置 SSH 会话以使用 MIT Kerberos DLL 而不是内置的 Windows DLL。我希望那里有一个 DLL,它要么从未尝试过找到 LR TGT(如 heimdal),要么允许来自多个领域的多个 TGT。它不需要像 MIT Kerberos 这样的 GUI 窗口,但它有帮助。
好的,我已经提出了一个可行的解决方案,需要进一步完善,因此可能不适用于所有环境。
这适用于:
我在查看 MIT Kerberos 源代码并发现了Windows 的自述文件。特别令人感兴趣的是Credentials Cache的不同值。它支持默认值API:,但我惊讶地发现我的注册表使用MSLSA:代替。
我在 下尝试了不同的ccnameHKEY_CURRENT_USER\Software\MIT\Kerberos5值。我首先尝试了MEMORY:,这导致了一些有趣的行为。打开 PuTTY 会话时,我的 MIT Kerberos Ticket Manager 窗口将恢复并转到前台,要求我输入凭据。哇!这以前从未发生过,但遗憾的是,PuTTY 会拒绝它。对我有用的价值是FILE:C:\Some\Full\File\Path. 我不太确定如何保护对指定文件的访问,因此我将其作为读者的练习。我得到了相同的窗口到前台行为,这次只有 PuTTY 喜欢它。票务管理器窗口最终也同时显示了 LR 和 FR 票证。事实证明,这些票证是可转发的,并且可以在多次 Windows 锁定/解锁后继续存在。注意:请务必在注册表编辑之间完全退出并重新启动票证管理器。我还没有尝试过API的ccname :。
我不知道这是否有影响,但在它开始工作之前我也尝试过KSETUP。起初,无参数的 KSETUP 只会向我显示有关 LR 的信息。我在本地工作站上添加了一些有关 FR 的信息。
ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |