问题标签 [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.
wcf - 为什么 kerberos 在 WCF 中默认为 NTLM?
有一个简单的 WCF 演示应用程序,它有两个控制台项目——主机和客户端。两者都在我的机器上运行(win 7 box)。我正在使用 netTcpBinding,它使用 Windows 身份验证。
问题是身份验证从 kerberos 降级到 NTLM,我不知道为什么。
如果我使用
在客户端,一切都很酷。但是,如果我将其更改为false
,则会出现以下异常:
SecurityNegotiationException:远程服务器不满足相互身份验证要求。
这表明 kerberos 失败,并且由于客户端不允许 NTLM,因此调用会导致引发异常。
这是项目的问题,还是我的开发机器配置造成的外部问题?
解决方案:
显然,我必须在客户端配置中指定服务器的身份。就我而言,服务器以我的身份运行,因此我修改了客户端:
我不确定为什么这可以解决问题。好的,现在在客户端我完全信任服务器(嘿,我认识那个人!)。但是既然 NTLM 不如 kerberos 安全,为什么不反过来呢?如果我不完全信任服务器,我使用 kerberos,否则 ntlm 很好。
或者,OTOH,如果我不完全信任服务器,为什么它根本工作?“SecurityException:未设置端点身份。WCF 无法信任服务器的身份,不会传输客户端身份。”
c++ - 如何知道 Kerberos 票证是否已过期
我有一个使用 Kerberos 身份验证连接到远程服务的客户端应用程序。在 ADSI 中重置 SPN 的密码而不更新票证时,身份验证失败(当然)。问题是,如果有办法提前知道票是无效的\过期的。
java - Java 或命令行实用程序中是否有一种方法可以使用本机 SSPI API 获取服务的 Kerberos 票证?
我想用 Java 中的 Kerberos 实现单点登录,并成功地使用来自 Windows 登录的票证为服务创建票证。不幸的是,我只能在启用注册表项“allowtgtsessionkey”时创建该票证。一旦我禁用它,我就会收到一条异常消息“标识符与预期值不匹配 (906)”。注册表项记录在http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html和http://support.microsoft.com/kb/308339上。
不幸的是,我无法访问将要使用我的应用程序的计算机上的注册表,因此我正在寻找一种无需修改即可执行此操作的方法。当我在 Internet Explorer 或 Mozilla Firefox 中通过 SPNEGO 进行单点登录时,它们会在我的票证缓存中创建一个服务票证,因此肯定有一种方法可以在不设置注册表项的情况下执行此操作。有谁知道如何在 Java 中做到这一点?
谢谢你的帮助,memminger
更新:我放弃了这个问题。Windows 注册表项可防止访问票证缓存中的票证(更准确地说:主题)。Windows 上的 Java 使用自己的 GSSAPI 实现,我想这需要访问票证才能创建服务票证。SSPI Windows API 虽然可以完全访问票证缓存,因此可以创建服务票证。Web 浏览器使用此 API,但 Java 不使用此 API(根据http://java.sun.com/developer/technicalArticles/J2SE/security/#3)。当我在访问过一次网页后在 Firefox 中禁用 SSPI(因此已创建服务票证)时,我仍然可以访问该页面,因此也许命令行工具足以使用 SPPI API 创建服务票证。
对我们来说,这意味着现在我们可以放弃单点登录(这对我们来说是不可接受的),或者我们在应用程序的客户端进行身份验证(因为我们只能读出用户名而不能在服务器),这是一个主要的安全风险。另一个例子是更强大的安全约束如何导致更大的安全漏洞,因为它们变得太复杂而无法使用。
sql-server-2005 - SQL Server - 超时异常
我们正面临 SQL 超时问题,我发现错误事件 ID 是事件 5586 或 3355(无法连接/网络问题),还可以看到一些其他与数据库相关的错误事件 ID(3351 和 3760 - 权限问题)报告在不同的时间。
可能是什么原因?任何帮助,将不胜感激..
kerberos - 对 Kerberos、委派和 SPN 的困惑
我正在尝试编写一个执行 Kerberos 委托的概念验证应用程序。我已经编写了所有代码,并且它似乎可以正常工作(我的身份验证很好),但是生成的安全上下文没有设置 ISC_REQ_DELEGATE 标志。
所以我在想也许端点之一(客户端或服务器)被禁止委托。但是,我没有针对 SPN 进行身份验证。只有一个域用户对抗另一个域用户。作为 SPN,InitializeSecurityContext()
我将传递“someuser@mydomain.lan”(这是运行服务器应用程序的用户帐户)。据我了解,域用户默认启用委派。无论如何,我要求管理员检查,并且“帐户敏感且不能委派”复选框已关闭。
我知道如果我的服务器作为网络服务运行并且我使用 SPN 连接到它,那么我需要 AD 中的计算机帐户选中“信任计算机以进行委派”复选框(默认情况下关闭),但是……事实并非如此,对吧?或者是吗?
另外 - 当计算机帐户中的复选框被设置时,更改会立即发生,还是我必须重新启动服务器 PC 或等待一段时间?
c++ - LsaCallAuthenticationPackage 在尝试清除特定票证时返回 ERROR_INVALID_PARAMETER 87 (0x57)
我正在尝试使用 LsaCallAuthenticationPackage 从缓存中清除特定票证。我总是在包状态中得到 ERROR_INVALID_PARAMETER 87 。可能是什么原因?这是我的代码(所有其他步骤都成功):
pTktCacheResponse = (KERB_QUERY_TKT_CACHE_RESPONSE )pRep;
for (ULONG i = 0; i < pTktCacheResponse->CountOfTickets; ++i) { KERB_TICKET_CACHE_INFO& ti = pTktCacheResponse->Tickets[i]; if (/ Some condition /) { KERB_PURGE_TKT_CACHE_REQUEST req; req.MessageType = KerbPurgeTicketCacheMessage;req.ServerName = ti.ServerName; req.RealmName = ti.ServerName; req.LogonId.HighPart = req.LogonId.LowPart = 0;
谢谢!!
dns - 在多个域中配置 kerberose-sso-negotiate
我有 mycorp.com、ch1.mycorp.com、mycorp2.com 域(都是 Windows) 我正在配置 sso-kerberose-negotiate 身份验证 我的服务器在 mainaaa3.mycorp2.com 中运行,我创建了 spn "http:/mainaaa3 .mycorp2.com”,并且我已经在域之间设置了信任,但是如果来自 mycorp.com、ch1.mycorp.com 域的用户不发送协商票,那么我在每个域中为“ http://mainaaa3.mycorp2.com”,现在我有错误:机制级别:解密字段的完整性检查失败(31)
我究竟做错了什么?
kerberos - AcceptSecurityContext (Kerberos) 返回 SEC_E_LOGON_DENIED
我正在尝试编写一个执行 Kerberos 身份验证的简单应用程序(目前没有相互身份验证)。
操作系统为Windows server 2003,标准版。我已经设置了活动目录并使用 setspn 工具创建了一个 SPN。
AcquireCredentialsHandle 在客户端和服务器上都返回 SEC_E_OK。
客户端的 InitializeSecurityContext 返回 SEC_E_OK。
服务器端的 AcceptSecurityContext 返回 SEC_E_LOGON_DENIED。
我确信我的代码没有任何问题,因为我在使用以下 MSDN 文章中的示例应用程序时看到了相同的行为:http: //msdn.microsoft.com/en-us/magazine/dvdarchive/bb985043.aspx
所以我想我的设置有问题。但我不知道是什么。也许我错过了 SPN 设置中的某些内容?任何帮助表示赞赏。
问候,大卫。
php - Kerberos 和/或其他身份验证系统 - 一次性登录所有 PHP 脚本
我正在管理一组几乎完全用 PHP 编写的 Web 应用程序,并希望找到一个身份验证平台来构建基于角色的授权系统。另外,我希望身份验证系统可以扩展以用于例如系统服务(SSH 等)
以下是我正在寻找的一些主要特征,按重要性排列:
- 简单的 PHP 实现(轻松存储/读取角色等)。
- 如果可能,冗余。如果身份验证系统出现故障,每个人都不会被锁定。
- 有适用于 Windows 和 Mac 的客户端。
- 简单的基于 Web 的管理(添加/删除用户/角色,更改密码)。如果没有,我可以毫不费力地构建一个管理系统。
- 一次性登录。
我还想在颁发身份验证令牌时存储用户的 IP 地址并使用它来授权用户使用一些非基于 Web 的应用程序。出于这个原因,我希望桌面客户端在例如用户在其工作站空闲时发出令牌并撤销令牌。我认为 Kerberos 可能是一个解决方案,但还有哪些其他选择?
winforms - 如何在调用 Web 服务时强制客户端(winform)应用程序使用 NTLM
我有一个调用 IIS 中托管的 Web 服务的 winform 应用程序,默认情况下,客户端应用程序将使用 Kerberose 对 IIS 进行身份验证,但由于某些原因它失败了。但是同一个应用程序在另一台 PC 上运行良好(使用不同的用户登录),并且我通过检查 IIS 服务器事件日志发现它正在使用 NTLM。
无论如何我们可以更改客户端应用程序(winform)身份验证类型吗?
提前致谢