问题标签 [sspi]

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 回答
1559 浏览

ldap - 使用 LDAP API 和 SSPI 实现相互身份验证

我想问你一个关于使用 SSPI 和 LDAP API 使用 Kerberos 实现相互身份验证的问题。

我正在使用以下指南:ldap_sasl_bind_s(GSSAPI) - What should be provided in the credentials BERVAL structure

这是我正在使用的算法:

这就是问题所在:两个 LDAP 错误代码都可以,但 pServerCreds 指向一个空的 BERVAL 结构(不是 NULL,但 bv_len 等于 0),它应该包含我必须传递给下一个 InitializeSecurityContext 调用的服务器凭据。如果我使用该数据为以下调用构建 SecBufferDesc 结构,它将返回 SEC_E_INVALID_TOKEN。

ldap_sasl_bind_s 应该返回一个空的 BERVAL 还是我做错了什么?

我已经使用完整的 SSPI 调用(服务器的 AcceptSecurityContext)测试了身份验证,它按预期工作。问题是我需要服务器是跨平台的,所以我不能使用 SSPI。

感谢您花时间回答!胡安

0 投票
2 回答
2480 浏览

wamp - 启用/配置 SSPI 后 WAMP 不启动

我试图让访问者在访问 Intranet 站点时登录 NT。看来 SSPI 模块是我正在寻找的。但是安装后我无法让 WAMP 恢复运行。任何援助将不胜感激。提前致谢。

我下载了 mod 并按照安装说明进行操作:

将 mod_auth_sspi.so 复制到 C:\wamp\bin\apache\Apache2.2.17\modules

将 sspipkgs.exe 复制到 C:\wamp\bin\apache\Apache2.2.17\bin (这不在说明中,但我在另一组方向上看到了该步骤,无论是否在这里,我都有同样的问题)

复制“LoadModule sspi_auth_module modules/mod_auth_sspi.so”行并放在 httpd.conf 中列出的其他模块的最后

复制以下代码:

进入 httpd.conf 的最后

注意:我认为 Directory 标签中的路径不正确,但不确定应该是什么,因为安装说明中没有涵盖该部分。

然后我从 WAMP 控制面板重新启动服务,它在橙色之间循环,然后是红色,然后又回到橙色,但永远不会回到绿色。浏览该站点会出现错误 102。Apache 错误日志确实提供了任何线索:

我在 Windows 7(64 位)上运行 WAMP 服务器

阿帕奇 2.2.17

PHP 5.3.4

mod_auth_sspi-1.0.4-2.2.2.zip 通过http://sourceforge.net/projects/mod-auth-sspi/

0 投票
1 回答
5748 浏览

java - SQLNestedException 异常 - 未加载本机 SSPI 库

我的服务器日志中出现以下异常。这是什么意思,我该如何解决?

0 投票
2 回答
1142 浏览

c# - C# p/invoke Secur32.dll 问题

我正在尝试包装 Secur32.dll 的EnumerateSecurityPackages函数,该函数声明如下:

我有以下 C# 代码,但是当我尝试运行它时会收到 AccessViolationException。在调试器中,pcPackages 变量确实设置正确,但我认为我对 SecPkgInfos 数组做错了。

任何想法我做错了什么?

0 投票
4 回答
29024 浏览

.net - WCF '对 SSPI 的调用失败,请参阅内部异常'

我曾经安装并运行了一个自托管的 win 服务 WCF。

自然,我不得不做出一些改变。所以我将基址改回我的本地工作站并进行了更改。它工作得很好。

现在是重新分配的时候了……嗯……它一直在流水,我想不通。

从 app.config 文件中:

从 web.config 文件(长话短说):

任何猜测我做错了什么?

0 投票
0 回答
1504 浏览

c++ - 使用 RFC 4777 中的示例代码 - InitializeSecurityContext 返回错误

我正在尝试使用 IBM 的 iSeries Telnet Enhancements RFC 4777 中发布的示例在用 C++ 编写的客户端 telnet 应用程序中创建到 System i 服务器的单点登录连接。

给出的代码示例调用AcquireCredentialsHandle,然后调用InitializeSecurityContext对InitializeSecurityContext的调用返回错误SEC_E_TARGET_UNKNOWN,大概是因为它不理解我传递的目标名称。

RFC 4777 说这个目标名称应该是一个带有 kbsrv400 的字符串,然后是我的服务器名称完全限定为小写。我将其解释为“krbsrv400/iseries.domain.com”。我在这里尝试了各种组合,但无法正常工作,还没有找到任何其他使用 MS SSPI API 连接到 IBM System i 的代码示例。

我知道 System i 和域上的 Kerberos 设置工作正常,因为 IBM 自己的 iSeries Access 能够正常登录并使用 kerberos 执行 telnet 5250 登录。

我在登录到域的 Windows 7 上运行。该域是在 Windows 2008 中的 Active Directory 下设置的。我正在使用 MS Visual Studio 2005 构建我的 telnet 应用程序。System i 服务器操作系统是 V6R1。

有没有人让这个示例代码工作?

关于使用它与 System i 对话时目标名称的格式应该是什么的任何建议?

谢谢!

附加信息:2011 年 9 月 8 日

在具有 Windows 2003 托管域的 Windows XP 客户端下已使此工作正常。

RFC 中有两个错误:

1) 它说使用“​​krbsrv400/spi 名称”的名称,但是查看我使用 iSeries Access 登录时生成的 kerbtray 中的票证,我看到实际格式是“krbsvr400/spi 名称”。

2) RFC 说要填充发送到系统 i 的票证长度,但是当我使用 Wireshark 查看 IBM iSeries 访问 telnet 时,我发现他们没有填充它。

更改上述内容使我在 Windows XP 上的应用程序中单点登录工作正常。我在 Windows 7 上仍然遇到问题。

这是一个不同的域(由公司管理,在世界各地的 Windows 2008 和 Windows 2003 服务器上)和不同的 iSeries。

奇怪的是,我可以在 System i Access OK 中使用 Kerberos 登录,但是当我查看 kerbtray 时,我没有看到我机器上的系统的 kerbsvr400/... 票证,就像我在 Windows XP 上所做的那样。我的应用程序无法运行并因 SEC_E_TARGET_UNKNOWN 错误而失败。

0 投票
1 回答
1376 浏览

c++ - 来自 SSPI 的 KRB_AP_REQ 票证

我有一个使用 Kerberos 进行客户端身份验证的 Linux 服务器应用程序和需要在 Windows 上运行的客户端。Kerberos 票证由 Windows Active Directory 颁发。如果我使用 MIT KfW 3.2.2,客户端将在服务器上成功验证。用于从 Kerberos 服务器检索 AS 和 TGS 票证并将其存储在 kerberos 凭证存储中的 API。但是这种方法的问题是用户需要再次输入他的凭据。解决方案是访问 MS LSA 存储,但这不起作用。ms2mit.exe 应用程序也没有。我以普通用户或管理员身份运行它,或者我完全禁用 UAC 都没有关系。这就是为什么我想在客户端使用 SSPI 来制作我将发送到服务器的 KRB_AP_REQ 消息。那可能吗。如果是的话怎么做?如果不,我还有什么其他选择?请注意,服务器已经构建,并且需要花费大量精力来更改它,因此我想在 Windows 上找到解决方案。

0 投票
1 回答
575 浏览

php - sspi 模块是否与 ajax 冲突?如何解决?

我认为 Mod-Auth-SSPI 与我的 ajax 系统发生冲突。请找到以下代码 -

它总是返回警报('该死!它不工作......')。这意味着 displayInfo 不工作或与某些东西冲突。谁能告诉我如何解决它?

请注意,Mod-Auth-SSPI 根据我的需要正常工作。

0 投票
5 回答
3058 浏览

sspi - 在调用 InitializeSecurityContext 之前,在 SSL 握手中从服务器接收多少数据?

在我们的 Windows C++ 应用程序中,我使用 InitializeSecurityContext() 客户端打开到运行 stunnel SSL 代理的服务器的 schannel 连接。我的代码现在可以工作,但只有我想消除的黑客。

我从这个示例代码开始:http://msdn.microsoft.com/en-us/library/aa380536%28v=VS.85%29.aspx

在示例代码中,查看 SendMsg 和 ReceiveMsg。发送或接收的任何消息的前 4 个字节表示消息长度。这对于示例来说很好,其中示例的服务器部分符合相同的约定。

stunnel 似乎没有使用这个约定。当客户端在握手期间接收数据时,它如何知道何时停止接收并再次调用 InitializeSecurityContext()?

根据我从文档中收集到的信息,这就是我构建代码的方式:

如果在第 3 步中没有从服务器读取足够的数据,我希望第 4 步中的 InitializeSecurityContext 返回 SEC_E_INCOMPLETE_MESSAGE。相反,我得到 SEC_I_CONTINUE_NEEDED 但一个空的输出缓冲区。我已经尝试了几种处理这种情况的方法(例如返回第 3 步),但似乎没有一种方法有效,更重要的是,我没有看到这种行为被记录在案。

在第 3 步中,如果我添加一个在超时到期之前接收数据的循环,那么在我的测试环境中一切正常。但必须有更可靠的方法。

知道在第 3 步中接收多少数据的正确方法是什么?

0 投票
1 回答
287 浏览

sspi - MS-SIPAE <-> SSPI:MakeSignature 是“GSS_GetMIC”?

我有以下关于 Windows SSPI 的问题。我制作了一个必须通过服务器授权的 Win32 应用程序:在 NTLM 模式下使用协议 MS-SIPAE。该应用程序使用 SSPI。请参阅http://msdn.microsoft.com/en-us/library/cc431510.aspx。关于 MS-SIPAE。那里有以下步骤(http://msdn.microsoft.com/en-us/library/dd946897.aspx):“协议客户端使用身份验证协议 GSS_GetMIC() 调用,如 [MS-NLMP] 部分中所述3.1.4 对于 NTLM,在 [RFC2743] 第 2.3.1 节中对于 Kerberos,使用存储在 SA 中的身份验证协议上下文为前面步骤 2 中构造的缓冲区生成签名令牌。”</p>

问题是:SSPI API 中的抽象“GSS_GetMIC”究竟对应的是什么?在 SSPI 中,我找到了一个名为 MakeSignature 的函数——看来这就是我需要的。还有一篇 MSDN 文章http://msdn.microsoft.com/en-us/library/ms995331.aspx似乎证实了这一点。有人可以证实这个结论吗(我不想依赖“似乎”)?