问题标签 [waffle]
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.
java - NTLM authentication in HttpURLConnection not working in JRE but works in JDK environment
I am using eclipse to develop 2 parts of an application.
The web part provides REST services and requests to the services are filtered using waffle.servlet.NegotiateSecurityFilter
which extracts the Windows login information to identify the user.
The client part uses HttpURLConnection
to send requests to the web part. As I understand it, the Ntlm information is automatically packed into the request.
While I was testing this in eclipse, it worked fine. When I deployed the client JAR it did not work. I get a 401 Not Authenticated.
After a bit of investigation I found that I can reproduce this in eclipe by setting the execution environment to a JRE instead of the default which is a JDK.
I have JRE "1.8.0_201" and JDK "1.8.0_161" installed.
So, simply by changing the execution environment from JRE to JDK I can get the connection to authenticate.
What does the JDK do differently and what can I do to get the client to work with a JRE?
spring-security - 带有华夫饼的 LDAP SSO
我正在使用 Spring 5 Web 应用程序。
我对 Waffle 完全陌生,我想使用 waffle 让用户使用他们的 Windows 凭据在我的 Web 应用程序上进行身份验证。获得用户名后,我将进行 LDAP 搜索。
但我不确定我可以在哪里编写自定义代码来获取用户名进行验证?
我尝试使用弹簧安全 LDAP。但无法获取窗口用户登录名。网上有人建议使用 waffle 来获取窗口用户信息
WebSecurityConfig 代码
xml
tomcat - 如何配置 waffle 以使用自动登录?
我有一个关于 Tomcat 8.5 的网页,它使用 Waffle 1.9.0 来处理单点登录。在 localhost 上,它会自动让我登录,但由于我将它部署在远程服务器上,它偶尔会要求我提供凭据并告诉我该网站不安全。这是一个内部应用程序,我没有证书。
有没有办法将 waffle 配置为始终自动登录而不要求提供凭据?
这是我在 web.xml 中的过滤器:
java - 如何使用 Waffle 检索用户的组/角色?
我已设置 Active Directory 并想设置 SSO。我正在使用 Waffles,并且想知道我的 Servlet 中的用户组。如何检索用户的组?
java - Active Directory 中是否存储了身份验证令牌?单点登录和 WAFFLE/KERBEROS
我的任务是为我公司的应用程序创建 SSO(单点登录)。我刚从大学毕业,所以对这里的大部分事情仍然很新鲜。我做了很多研究,我并不完全了解所有这些,但我正在尽我所能。所以我所处的场景是,我有一个 Windows Java 应用程序(Swing)(不是基于 WEB 的应用程序)和一个基于 LINUX 的服务器。两者都可以访问相同的 Active Directory (AD)。我需要验证客户所说的是谁。我试图同时使用 Kerberos 和 WAFFLE 都无济于事。Kerberos 有零有用的代码示例或在线信息,甚至可以开始尝试使用这种形式的身份验证。WAFFLE 我已经设置但不能使用,因为它需要一个 Windows 服务器,而我的是 LINUX。
我想要做的是将当前登录的 Windows 用户与令牌一起发送到服务器,服务器在活动目录中进行查找以查看用户名和令牌是否匹配。如果他们这样做了,那么您就可以登录了。这可能吗?在 AD 中是否存在这样的事情?Kerberos 令牌是否存储在 AD 中?如果是这样,我是否能够访问这样的令牌以发送到服务器进行身份验证?SSPI 令牌是否存储在那里,因为这就是我工作的这个 WAFFLE 代码似乎正在使用的东西,但我无法找到如何在 AD 中查询这样的令牌。
在以下代码中,WAFFLE 使用 SSPI 进行一些身份验证。我不完全理解它是如何工作的,但我想看看我是否可以将它在此处使用的令牌发送到 LINUX 服务器以在 AD 中查找以检查它是否有效,但它似乎不是存储的东西在公元。
任何帮助是极大的赞赏。
kerberos - SSPI 意外地为具有相同密码的帐户进行身份验证
我编写了一个与 RMI 远程通信的 Java 客户端和服务器(在 Win7 主机上)。我希望服务器对客户端用户进行身份验证,而客户端用户无需提供凭据(即单点登录)。为了利用 Window 的SSPI,我正在使用Waffle库。
- 服务器正在使用服务帐户dev\svc_serviceaccount在host1.dev.mydomain.com上运行
- 我为dev\svc_serviceaccount添加了一个 SPN, test/ host1.dev.mydomain.com
- 客户端以dev\testuser身份在host2.dev.mydomain.com上运行,并配置为使用上面的 SPN
- 客户端和服务器都配置为使用 Kerberos(非协商)SSPI 提供程序
一切都按预期工作,服务器成功验证了客户端,使用 Wireshark 我可以看到客户端和域控制器之间发送的 Kerberos 数据包。
接下来,我将服务器更改为作为不同的服务帐户 ( dev\svc_serviceaccount2 ) 运行。此服务帐户没有 SPN。客户端继续运行,并使用原始 SPN 进行配置。正如预期的那样,服务器现在无法对客户端进行身份验证。
最后,我将 dev\serviceaccount2 的密码更改为与dev\serviceaccount1相同,并按照上面的失败场景运行。除了现在服务器成功验证客户端!
我相信密钥来自密码哈希,但这仍然让我感到惊讶。谁能确认这是否是 SSPI 的预期功能?我正在尝试确定我的代码(或者华夫饼)是否存在问题。或者可能是环境因素导致了这种情况?任何帮助/解释将不胜感激。
java - 如何使用 Spring Security 实现混合身份验证,提供带有 WAFFLE 的单点登录和基于表单的身份验证?
在我基于 Spring Boot 的 Web 应用程序中,应该有两个身份验证选项。一方面,应该使用单点登录,这是默认方式。另一方面,还应提供基于表单的身份验证。这通常称为混合身份验证。
如果使用基于表单的身份验证,则会检查服务器端已知用户帐户。单点登录使用 Windows 登录。
我已经可以成功地将 WAFFLE 作为单点登录组件集成到服务器应用程序中,并使用mgoldgeier的示例作为模板。
有与 Tomcat 相关的 WAFFLE 混合身份验证示例(此处和此处),但不幸的是,我找不到任何与 Spring Boot 或 Spring Security 相关的代码。
如果有人能给我举个例子,我会很高兴的!
java - Waffle SSPI Kerberos 单点登录:配置加密密码和调试
我们如何配置 Java Waffle SSPI Kerberos 单点登录 (SSO) 客户端应该使用哪些加密密码?
我们如何才能最好地调试 客户端和服务器实际使用的密码?
背景
我们需要限制用于 Kerberos SSO 的加密密码,删除现在被认为很弱的密码。
我们的设置
Java 应用服务器通过纯 Java GSSAPI 实现 SSO。
Java 客户端通过两个可配置的 SSO API 实现 SSO:
在没有激活 Credential Guard 的 Linux 或 Windows 10 上:通过纯 Java GSSAPI。
在启用 Credential Guard 的 Windows 10 上:通过 Java Waffle + Microsoft SSPI API 。
Kerberos “后端”是 Windows Active Directory。
我们已经知道的
在纯 Java GSSAPI 实现(服务器和客户端)上,我们可以设置系统属性java.security.krb5.conf
来配置 Krb5.conf 文件,我们可以在其中显式配置加密类型,例如
https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part4.html
使用 GSSAPI,我们可以通过系统属性获取调试信息sun.security.krb5.debug=true
但是,在 Waffle SSPI 客户端上,这两个系统属性都没有任何影响。回想起来,这并不奇怪,因为 SSPI 没有调用 java Runtime kerberos 代码。
我的猜测是 SSPI 从 Windows 操作系统中获取允许的加密类型,我们可能无法从 java 应用程序中配置类型。
Waffle 网站建议使用以下链接进行 Kerberos 调试:
https://support.microsoft.com/en-us/help/262177/how-to-enable-kerberos-event-logging
java - Waffle SSPI如何设置SPNEGOmutualFlag
在尝试解决这个问题时,我们注意到来自 GSSAPI 和 SSPI 客户端实现的 SPNEGO 请求 (KRB_AP_REQ) 之间存在差异:
使用 GSSPI 将 mutalFlag 设置为 False
使用 SSPI,mutualFlag 设置为 True。
在调用 GSSAPI 的 Java 代码中,我们可以根据需要将标志显式设置为 true 或 false,但我发现无法使用 Waffle / SSPI 执行此操作。
在 Github 上的 Waffle 代码中搜索“mutual”只得到了一个结果:对于常量ISC_REQ_MUTUAL_AUTH
有没有办法通过 Waffle / SSPI 显式设置mutualFlag?
即相当于下面的 GSSAPI 代码:
java - 收到错误 java.lang.NoSuchFieldError: pBuffers
我正在尝试在 Glassfish 4中实现 SSO(使用waffle )。我在 Java + Glassfish 中使用以下 jars(我已经调整 glassfish 以使用 JNA 5.5):
- jna-5.5.0.jar
- jna-平台-5.5.0.jar
- waffle-jna-1.9.0.jar(也尝试使用 2.2)
一旦我调用构造函数 ManagedSecBufferDesc ,我就会收到 java.lang.NoSuchFieldError: pBuffers 错误
有人可以帮忙吗?