问题标签 [kerberos]

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.

0 投票
1 回答
1000 浏览

asp.net - 如何在 Kerberos 中“取消模拟”(取消委托?)

我有一个使用 Kerberos 访问使用 ASP.NET 3.5 和 IIS 的外部资源的 Web 应用程序。

当用户连接到应用程序时,Kerberos 身份验证自动神奇地允许我使用委托连接到充当用户的外部资源。这并不容易做到。这很好,但我有一个问题。有时我需要使用比用户拥有更多权限的帐户连接到外部资源。运行应用程序池的服务帐户具有我需要的添加权限。如何删除用户的 Kerberos 标识并使用运行应用程序池的服务帐户连接 Kerberos?

更新

我不知道为什么我没有得到任何回应。我以前从未见过。请发布问题,他们可能会澄清问题(对我来说也是)。


在 Kerberos 中工作并且需要对委派的概述?阅读此答案的第一部分:https ://stackoverflow.com/a/19103747/215752 。

0 投票
1 回答
985 浏览

apache - 为什么 Firefox 一直在协商 kerberos 服务票证?

我对 Kerberos 进行了一些测试,发现了一些与 Firefox 和 Kerberos 相关的奇怪行为。我有一个运行 Apache + mod_auh_kerb 的服务器,它被配置为在服务来自客户端的请求时检查 kerberos 凭据。执行 Kerberos 身份验证并拒绝没有有效凭据的用户。但是,我不明白以下内容:

一旦发出第一个请求,TGS 就会缓存在客户端的 /tmp/krb5ccXXXX 中,但网络捕获显示 firefox 会为每个连接请求一个 TGS。由于我的服务票已被缓存,那么为什么不将其重新用于其他请求?每个连接如下:

client = GET index.html => server
client <= 401 Auth required = server
client = TGS-REQ => KDC
...
client <= TGS-REP = KDC
client = GET index.html + kerberos payload => server
client < = 200 OK = 服务器

这不是配置问题,因为 Konqueror 会按预期执行。

有任何想法吗 ?

提前致谢。

PS:这对于 GET 请求来说不是什么大问题,但考虑到基于表单的上传 (POST) 数据不应该被发送两次到服务器!

0 投票
2 回答
1211 浏览

asp.net - 如何在 ASP.Net 中对 Kerberos(Apple Open Directory)服务器进行身份验证

在工作中,我们刚刚实现了一个 Apple Open Directory 服务器。它存储每个人的用户名和密码,并实现 LDAP 和 Kerberos。我的任务是配置我们所有的 ASP.Net Web 应用程序以对其进行身份验证——因此用户可以使用他们的 Open Directory 用户名和密码登录到我们的 ASP.Net 应用程序。

我需要 mod_auth_kerb 之类的东西,但 IIS 和 ASP.Net 除外——而且我想使用基于表单的身份验证。

这可能吗?

0 投票
2 回答
15417 浏览

asp.net - ASP.Net Web 应用程序尝试使用模拟和委托连接到 SQL Server

我正在尝试在 Intranet ASP.Net Web 应用程序中使用模拟和委派,以便将经过身份验证的用户凭据传递到 SQL Server。

Web 服务器和 SQL 服务器是两台独立的机器,但在同一个域中,因此需要委托。

我做了以下事情:

  • 设置<authentication mode="Windows"/><identity impersonate="true"/>在我的网络应用程序的 web.config 中。
  • 启用了从 Web 服务器到 Active Directory 中 SQL Server 上的 MSSQLSvc 服务的约束委派。
  • 通过 IIS 在网站中仅启用 Windows 身份验证。

显然这应该都可以工作,但它没有(SQL Server 拒绝访问匿名用户 - “用户'NT AUTHORITY\ANONYMOUS LOGON' 登录失败”)。

在 IIS7 中,应用程序池设置为使用集成管道模式并使用 NetworkService 标识运行。该网站仅启用了 Windows 身份验证,扩展保护已关闭,内核模式身份验证已启用,并且 NTLM 是提供者。

我读过的所有网页似乎都表明我的设置应该可以工作。我错过了什么?

0 投票
3 回答
8799 浏览

authentication - 我如何知道服务器正在使用什么类型的身份验证?

我必须在http://someserver访问 Web 服务器,它需要一些身份验证。我如何判断它是否使用 NTLM、Kerberos 或其他任何可能的东西?

0 投票
3 回答
6450 浏览

iis-7 - IIS7 Windows 2008 服务器上的经典 ASP 模拟问题

我正在尝试从在 IIS7(webadmin)上的 Windows 2008 serer 上运行的经典 asp 站点写入服务器(web05)上的文件。这将失败,并且 web05 在保存操作过程中记录匿名登录尝试。

Webadmin 的站点以经典模式在应用程序池上运行,域用户作为进程帐户。进程帐户有权“信任此用户委托任何服务(仅限 Kerberos)”。这同样适用于 web05 和 webadmin 服务器。

该站点使用 Windows 身份验证,其想法是,当我使用域用户登录该站点时,我的用户的权限应定义允许我在 IIS 站点上下文中执行的操作。如果我打开基本身份验证,一切正常。

我还使用 setspn.exe 为 URL 添加了 SPN。如果我输入 setspn.exe -L webadmin,我会得到:

因此,据我了解,SPN 设置正确。

如果我在执行保存操作时在 webadmin 上运行 processmonitor,它表示该进程确实在冒充我的域用户 - 但得到“拒绝访问”(正如我之前所说,web05 记录了匿名登录尝试)。

知道是什么原因造成的吗?

亲切的问候,西蒙

0 投票
1 回答
1982 浏览

wcf - WCF - 为什么 netTCPBinding 可以在没有任何 SPN 设置的情况下与 Kerberos 身份验证一起正常工作?

在我们的一个网络中,我们正在使用 netTCPBinding。托管在作为域帐户运行的 Windows 服务中的 WCF 服务。

从事件查看器中,我可以看到我的 WCF 服务使用 Kerberos 身份验证。一切都可以“开箱即用”无缝运行,具有简单的默认配置<identity>,配置文件中没有元素,也没有任何机器的 SPN 设置,例如:

但是从多个在线参考资料中我得出的结论是 SPN 设置是必要的。不清楚,为什么在我的情况下它可以在没有这些设置的情况下工作?

期待 WCF-Security 专家的解释。

0 投票
1 回答
2487 浏览

firefox - 配置 Firefox 3.0.x 以发送 Kerberos 令牌

我试图说服 Firefox 3.0.14 发送一个 Kerberos 令牌。我已经正确配置了服务,IE 将发送一个 Kerberos 令牌(即启动 YI..),但是在将主机名添加到 network.negotiate-auth.trusted-uris 和 network.negotiate-auth.delegation-uris 设置之后:config,Firefox 只发送一个 NTLM 令牌。这是 Live Headers 的(缩减的)输出:

到服务器->

<-来自服务器

到服务器->

<-来自服务器

服务器只对 Kerberos 令牌感兴趣,即从 YI 开始的令牌,因此在第二个请求上发出 Unauthorized,此时 Firefox 放弃了。

我使用的是 Windows 2003。有什么想法吗?

Ĵ

0 投票
2 回答
11340 浏览

java - 如何针对 Java 中的服务器验证 Kerberos 票证?

我们正在使用 JAAS 在使用 Windows Kerberos 票证缓存的 Java 应用程序中启用单点登录。我们的 jaas.conf 配置文件如下所示:

这样,我们就可以创建一个 Jaas LoginContext 并成功获取用户的 Kerberos 票证。我们使用 JMI 将此票证发送到服务器应用程序。但是,我们无法在服务器上验证 Kerberos 票证实际上是由我们的 Active Directory 创建的。

目前,我们通过简单地检查服务器主体 (KerberosTicket.getServer()) 名称是否在领域部分中有我们的域名来对票证进行非常不安全的验证。但当然,任何人都可以使用相同的域名设置自己的 Kerberos 服务器,并使用该票证来启动应用程序。

我发现的一个想法是使用 Kerberos 票证针对 Active Directory LDAP 进行身份验证。不幸的是,我们使用 Windows 7 并重新使用 Kerberos 票证对 LDAP 进行身份验证仅在设置注册表条目时有效(请参阅http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss /tutorials/Troubleshooting.html,搜索 allowtgtsessionkey)。这对我们的用户来说是不可接受的。

有什么方法可以根据我们的 Active Directory 服务器验证票证吗?我怀疑有一种方法可以检查 KerberosTicket.getServer() 票证是否等于我们服务器的票证,但我不知道该怎么做。更新: KerberosTicket().getServer() 只返回一个 KerberosPrincipal,它只包含服务器票证名称和领域,因此它不适合验证。

谢谢你的帮助,memminger

0 投票
4 回答
3777 浏览

c# - 如何以编程方式清除 Kerberos 票证缓存

有谁知道如何清除本地计算机上的 Kerberos 票证缓存 - 使用托管 \unmanaegd 代码?

提前致谢!