问题标签 [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.
php - 在 mod_auth_sspi_1.0.4-2.2.2 中禁用登录提示
我正在尝试做的事情:
在我们公司的 Intranet 上创建一个主页,该主页会自动获取查看该页面的人的登录 Windows 用户名,而不会在页面加载时提示该人输入这些凭据。
目前,我只希望它获取本地用户名,因为我们的 IT 人员需要一段时间才能设置域。例如,现在我希望它在没有任何提示的情况下捕获“(PC-Name)\windows.user.name”。
环境:
Windows 7 x64 上的 Apache 2.2.21(一旦投入生产,将在 CentOS 上)。
PHP 5.3.8 (VC9-ZTS)。
Internet Explorer 9.0.8x 和 Firefox 6.0.2(稍后会担心 Chrome)。
当前的测试页面只是一个调用 print_r( $_SERVER ) 的 PHP 脚本。
为简单起见,我正在测试的目录不是 VirtualHost。
到目前为止我采取的步骤:
从 SourceForge 下载 mod_sspi_1.0.4-2.2.2 并将 mod_auth_sspi.so 解压缩到 Apache 模块目录。
添加了模块声明:
LoadModule sspi_auth_module 模块/mod_auth_sspi.so
添加目录定义:
AllowOverride 无 选项 无 订单允许,拒绝 全部允许
通过转到 about:config 并将 network.automatic-ntlm-auth.trusted-uris 设置为 PHP 脚本的绝对 URL 路径,在 Firefox 中启用集成身份验证,然后重新启动 Firefox。
我还没有在 IE 中完成相同的步骤,但是一旦我让 Firefox 正常工作,我就会这样做,因为这是我们内部支持的主要浏览器。
重新启动 Apache 并尝试加载测试 PHP 脚本。
结果:
- 在 IE 和 Firefox 中,页面加载前都会提示我输入用户名和密码。我不想要那个提示。我希望在没有提示的情况下自动检测用户名。
到目前为止的故障排除:
我尝试过各种 SSPI 选项,例如权威开/关等等。没有效果。
如果我删除“需要有效用户”,则不再出现提示,但是用户名也没有传递(它不是 NULL;只是没有在数组期间设置)。
如果我在提示符上点击“取消”,我会得到标准的“需要身份验证”页面。
如果我输入了无效的用户名,或者输入了正确的用户名但密码错误,页面将加载但用户名将是“(PC-Name)\Guest”。
如果我输入正确的用户名/密码,则会显示用户名而不是访客。
在 IE 或 Firefox 中输入用户名/密码后,浏览器会记住后续页面加载的用户名,直到我清除存储的密码缓存或重新启动浏览器。
在过去的 3 个小时里,我一直在谷歌搜索和随机猜测。零成功。我发现一些孤立的论坛帖子有人问这个问题,但他们要么没有得到回答,要么提供了我已经尝试过但没有成功的解决方案。
同样,我想要的是在没有任何提示的情况下加载页面,并在 $_SERVER 数组输出中显示当前登录的 Windows 用户名。
据我所知,这可能是:Windows 配置问题、Apache 配置问题或浏览器配置问题。除此之外,我的想法很新鲜。
如果您能提供任何帮助,我将不胜感激。谢谢!
——克里斯
c++ - 与 PSECURITY_STRING 不兼容
我正在尝试使用来自http://msdn.microsoft.com/en-us/library/windows/desktop/aa380536(v=VS.85).aspx的代码
AcquireCredentialsHandle 行表示第二个参数与 PSECURITY_STRING 不兼容。有人知道我可以在这里做什么吗?
c++ - Microsoft Windows SChannel SSPI 自检?
该问题与一些规范 (FIPS) 有关,这些规范要求用于 TLS 的 SChannel 模块在使用之前执行自检以验证它们没有受到损害。FIPS 就是一个例子。在开源库中内置了自测。SChannel 有这个能力吗?我找不到对此的任何参考,但似乎很奇怪,这会被忽略。
我希望这可以使问题不那么模糊和模棱两可。我相信这是一个对 SChannel API 有深入了解的人可以合理回答的问题。
补充:我对 FIPS 1 级和第 2 级的理解是,算法的操作需要在运行时(自检)进行验证,而不仅仅是在最初获得认证时。此外,内存中的图像需要使用散列或类似的方法进行验证,以确保它没有被更改。
如果这些事情没有在运行时完成,那么存在修补库的可能性不是吗?
wcf - c# WCF SSPI 在连接到 Windows 服务期间失败
我想提一下,我是 WCF 的新手。
我在连接到 WCF 服务时遇到问题。
WCF 服务是使用 netTcpBinding 创建的,并作为在特定帐户上运行的窗口服务安装在服务器计算机上(在属性中定义)。在从客户端计算机调用已发布的方法期间,我收到 SSPI 失败的错误。
如果我在没有特定帐户的情况下运行 Window Service,它可以正常工作。如果我添加此帐户,就会出现问题。我不能不跳过它,因为服务需要该凭据才能使用 DirectorySearch。
我调查了 .cofig 中的 mayby 应该以不同的方式设置。也许:
有什么建议么?
django - 使用 mod_auth_sspi 和 mod_wsgi 在 Apache 上运行两个 Django 应用程序
我一直在运行一个由 mod_auth_sspi 使用 mod_wsgi 启用单点登录的 Django 应用程序。
Apache/2.2.21 (Win32) mod_wsgi/3.3 Python/2.7.2 mod_auth_sspi/1.0.4
问题是,我无法添加第二个使用相同模块的 Django 应用程序,因为我也想使用单点登录。如果我添加第二个应用程序,Apache 只会验证第一个请求的应用程序。第二个抛出错误 500 - 内部服务器错误。如果我重新启动 Apache 并首先尝试请求第二个应用程序,它可以工作。但是当我请求第一个应用程序时,它会抛出错误 500(与第一个错误相同)。
错误日志:
配置文件/wsgi.conf:
c:/www/app2/app2.wsgi(app1.wsgi类似):
您知道如何让这两个应用程序与单点登录一起工作吗?不知道是django的错,mod_wsgi的错还是mod_auth_sspi的错。你能帮我吗?
编辑:看起来,它不依赖于 mod_auth_sspi 模块。
security - LogonUser 为禁用的帐户返回 true
我正在调用LogonUser以尝试验证一组凭据:
即使帐户被禁用,它也会返回true :
我还尝试直接使用 SSPI 来验证凭据,这涉及调用:
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_OUTBOUND, ..., ["forest", "stapler", "avatopia.com"], ...)
InitializeSecurityContext(...)
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_INBOUND, ...)
AcceptSecurityContext(...)
InitializeSecurityContext(...)
AcceptSecurityContext(...)
AcquireCredentialsHandle
在大多数机器上,如果用户帐户被禁用,初始调用会失败。但是在我正在测试的这台特定机器上,它完成了整个周期并且可以正常工作。
如果我尝试使用无效密码,那么LogonUser
(正确)会失败:
返回false,并GetLastError
返回1326
(登录失败:未知用户名或密码)
尝试使用无效密码的 SSPI 也(正确)失败:
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_OUTBOUND, ..., ["forest", "adf342sdf3", "avatopia.com"], ...)
InitializeSecurityContext(...)
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_INBOUND, ...)
AcceptSecurityContext(...)
失败(登录尝试失败8009030C
)
更糟糕的是,这种行为只发生在一台机器上。
为什么LogonUser
和整个安全支持提供程序接口都表明在特定加入域的机器上禁用帐户的凭据:有效?
- 加入域的机器
LogonUser
(错误地)成功:Windows XP SP2 - 加入域的机器
LogonUser
(正确)失败:Windows XP SP2
更新:
没有本地用户调用Forest
:
也没有任何本地用户调用Forest
:
这是无关紧要的,因为我要求avatopia.com\Forest
,而不是speeder\Forest
。
oi vay人们只是因为允许残疾用户访问他们不应该被允许访问的东西而把他们的内裤弄成一堆。
c++ - 在 C++ 中使用 SSPI 实现安全连接 - 澄清一些术语
我必须编写一个应用程序,使用 Microsoft API 实现客户端和服务器之间的安全连接。谷歌给了我很多结果,我有一个大麻烦 - 需要有人在我的脑海里给我一些命令:
问题:
- 什么是 SSPI 接口?什么是 Schannel.dll 库?有什么不同?(我看到我可以包含“SSPI.h”、“Schannel.h”和“security32.h”——我真的需要哪个头文件?)
我怎样才能找到一个真正简单的示例来解释我如何创建安全套接字?
在开始之前,您是否有一些我必须知道的指导方针?
如果您能提供帮助,我将不胜感激。
.net - SSPI/LSA 认证
想法是获取公司域凭据,我正在尝试对使用 RAS 卡和 VPN 加入网络的用户进行身份验证。我发现了一个代码,它正在做类似的事情,但由于某种原因,它只返回本地凭据。但我对用户使用 VPN 和 RAS 卡进行连接时输入的公司凭据感兴趣。
你能提供一些建议或者你有一个代码示例吗?
}
谢谢!!!!!
c++ - InitializeSecurityContext (Schannel) 的 TLS 握手过程
我必须使用 SSPI 接口实现 TLS 握手过程。
我的应用程序实现了客户端,正如我从这里看到的一般流程是:
- InitializeSecurityContext - 第一次调用返回一个指向 SecBufferDesc 结构的指针。
- 使用输出缓冲区调用发送(=WinSock API) 函数。
- 调用recv函数
- 使用缓冲区再次调用 InitializeSecurityContext。
关于这些缓冲区的MSDN解释:
“在初始调用后调用此函数时,必须有两个缓冲区。第一个缓冲区的类型为 SECBUFFER_TOKEN,包含从服务器接收到的令牌。第二个缓冲区的类型为 SECBUFFER_EMPTY;将 pvBuffer 和 cbBuffer 成员都设置为零。”
我的问题:
- 我需要更多解释:缓冲区的含义是什么?第二个缓冲区包含什么?它们是干什么用的?
- 在 MSDN 中写到 InitializeSecurityContext 函数的 TargetDataRep 输入参数是用于 Schannel 的坚果,但我看到的许多示例将其设置为 SECURITY_NATIVE_DREP。什么是 SECURITY_NATIVE_DREP 标志?为什么 MSDN 说将其设置为零?
我将非常感谢任何帮助。
谢谢!。
wcf - SecurityNegotiationException:对 SSPI 的调用失败
我有一个 WCF 网络服务,它使用NetTcpBinding
带有传输安全性并clientCredientialType
设置为none
. 我没有使用此绑定在端点上指定身份。每次尝试调用服务上的方法都会导致以下错误:
客户端:
System.ServiceModel.Security.SecurityNegotiationException:对 SSPI 的调用失败,请参阅内部异常。
服务端:
System.ServiceModel.Security.SecurityNegotiationException:远程身份验证失败(流可能仍可用于其他身份验证尝试)。
System.ComponentModel.Win32Exception:目标主体名称不正确
对此的任何帮助表示赞赏
谢谢
Sj