问题标签 [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.

0 投票
2 回答
2371 浏览

internet-explorer - 使用 Waffle 和 IE 丢失发布参数

为了调试,我编写了一个非常简单的 Web 应用程序,它只包含一个简单的 JSP 页面和一个包含文本字段和提交按钮的小表单。

Tomcat 配置为使用此页面上的 Waffle 过滤器。我知道将表单发送到同一页面,但在过滤器未涵盖的另一个 URL 下。Post 参数现在完全丢失,但传输了一个 ntml 令牌。

所以总结一下:

  • 我去http://myserver/autologin/test.jsp(通过华夫饼过滤器)
  • 在该页面上,我有一个指向 (http://myserver/content/test.jsp) 的表单,该表单是同一页面,但在另一个 URL(别名)下引用。
  • 所有 POST 参数都在第二个请求中丢失

我正在使用来自 waffle.codeplex.com 和 IE8 的 Waffle。

编辑:如果我使用其他 NTLM 过滤器,也会发生这种情况。所以问题不在于这里的 Waffle,而是 Internet Explorer 每次发出 POST 请求时都会强制重新验证 NTLM 会话。

以前有人遇到过这个问题吗?

0 投票
0 回答
1242 浏览

tomcat - Struts 1.3.8 在 Tomcat 5.0.28 中工作,但在 Tomcat 7 中失败

我的web应用环境:Struts 1.3.8 + Java JDK 1.6 + Tomcat 5.0.28 + WAFFLE认证

流程描述如下:

在 Tomcat 5.0.28 中,它可以正常工作。当我尝试在 Tomcat 7 中运行应用程序时,我无法从 TestServlet 中的会话属性中获取值。检查tomcat日志文件后,我发现在Tomcat 7中,当GET /test_project/testSerlvet时,安全包会重新连接到不同的端口,然后它会生成一个新的会话,之前会话中的所有值都会丢失。这是日志:

为什么安全包在 Tomcat 7 中打开新连接,但在 Tomcat 5 中保持连接?有谁知道问题是什么以及如何解决?

提前致谢。

0 投票
1 回答
2513 浏览

security - Struts 2 + Waffle:用户主体始终为空

我正在开发一个基于 Java、JSP、Struts 2 和 Waffle 的安全性 Web 应用程序。我在 Tomcat 6 中运行它。我的问题是我无法在 ActionSupport 类中获取主体对象。更加具体,

总是返回 null。但是,当我将其放入 .jsp 文件中时:

这不返回 null。所以信息必须在原始 HttpServletRequest 对象中可用。当然,我曾尝试在 ActionSupport 类中的 HttpServletRequest 对象上调用 getUserPrincipal(),但这也返回 null。

我的 ActionSupport 类定义为

此外,我的 struts.xml 使用 servlet-config 拦截器集定义了一个操作,因此 setPrincipalProxy() 方法确实被调用(通过打印语句验证)。这是我的 struts.xml(缩短):

web.xml 定义了一个安全过滤器和一个应该匹配任何 URL 的过滤器映射。以下是相关部分:

请求 SomeAction 时,系统会根据需要使用 HTTP 基本身份验证对话框提示我。这表明 SecurityFilter 实际上确实被应用了,不是吗?setPrincipalProxy() 方法也被调用。我可以在 JSP 页面中获得一个 Principal 对象。那么,当我尝试在 SomeAction 中访问 Principal 对象时,为什么它总是 null 呢?

还有一件事,我正在使用 URL 重写,以防万一这与它有关。

编辑:响应 batbaatar 的请求,在 Java 中设置请求。再简单不过了。

实例变量 httpRequest 的类型为 HttpServletRequest。

0 投票
1 回答
1795 浏览

java - 当我手动提供密码时,为什么 WAFFLE 不让我登录?

我正在使用 WAFFLE 将 Web 服务器与 Windows 身份验证集成。

当我使用短主机名访问 Web 服务器时,Chrome 和 IE 都认为该服务器“受信任”,并且一切正常。

当我使用完整的主机名访问完全相同的 Web 服务器时,该服务器不再被认为是“受信任的”(这是废话,老实说,因为 IP 地址没有改变)并且无论浏览器如何,都会提示我密码(这很好,服务器不受信任。)

问题是即使我提供了正确的密码,它也不会让我登录。相反,我一遍又一遍地得到相同的密码对话框。

如果我从 Mac 上的浏览​​器访问,我会看到一个登录对话框,并在其中输入我的密码会成功登录。

两者的区别在于,在 Windows 上,浏览器发送 Authorization: Negotiate,而在 Mac OS X 上,他们发送 Authorization: Basic。

我在网上看到的完整标题:

解码为“NTLMSSP\0....二进制数据....”

二进制数据不够大,无法包含我的凭据或其哈希,因此我被引导相信浏览器要求我输入密码,然后将其丢弃,而不是使用它来验证我的身份。

0 投票
1 回答
536 浏览

java - 将域名插入 servlet 身份验证令牌

我在我的网络应用程序中使用Waffle作为 SSO 解决方案。

一切正常,但我想稍微修改一些功能:

目前,如果用户未连接到域,SSO 将失败并打开一个小授权对话框:

在此处输入图像描述

Windows 授权需要用户名格式,Domain\Username但我的大多数用户不知道在他们的用户名前面添加域。因此,如果未指定,我想提供一个默认域名。

我找到了一个可以覆盖的 waffle 函数,它可以让我访问解码的身份验证令牌,我println在 waffle 函数中添加了一个,它以纯文本形式显示用户名(有或没有域,具体取决于在对话框中键入的内容) ):

整个函数来自 Waffle API,我只在开头添加了 println。

传递的用户名以纯文本形式打印在该令牌内的一堆随机字节字符之间(ÉsR=ÍtÍö?æ¸+Û-)。

诚然,总的来说,我对 JNA 和 java 的理解非常遥远,但我认为因为我可以在这里看到用户名,所以必须有一种方法可以将域名添加到此令牌的用户名部分?我可能是错的。

我的另一个想法是将域添加到pbClientToken从传递此方法的原始字节 [] 令牌创建的域中。

JNA对象派生类pbClientToken。它的方法看起来很有希望,但我似乎无法弄清楚我应该写什么领域。该方法似乎不适用于.StructureStucturewriteFieldStructure.getFieldspbClientToken

我希望这对于更熟悉 byte[] 处理或 JNA 的人来说是一个简单的问题。

0 投票
0 回答
360 浏览

java - 从 C++ 客户端在 Windows 2003 Server 上使用 waffle 的 Java SSO

我们有一个遗留的客户端-服务器应用程序,客户端用 C++ 编写,服务器用 Java 编写(都在 Windows 上运行),使用 CORBA 进行通信。请注意,服务器上的 Java 应用程序不使用 TomCat 或其他应用程序服务器。

为了启用客户端的 Active Directory 身份验证,我使用服务器上的Waffle库和客户端上的 Windows API 来执行协商SSPI 交换循环,如本文所述:在客户端-服务器应用程序中使用 Active Directory 验证用户

SSPI Exchange 循环的 MSDN 示例在客户端和服务器之间有多个发送-接收调用(可能也考虑了 NTLM 身份验证),但我已经能够通过向服务器发送一次身份验证令牌来成功验证客户端。

如果我们的服务器在 Windows Server 2003 及更高版本上运行,而我们的客户端在 Windows XP 及更高版本上运行,我是否可以假设将使用 Kerberos 并且不需要多次发送-接收调用?

如果我要在 Tomcat 上使用 Java+waffle 进行身份验证,我注意到身份验证令牌只发送一次。

0 投票
0 回答
133 浏览

windows - 重新部署 Web 应用程序后重新启动 tomcat

嗨,我正在使用 tomcat 并使用 Waffle 进行 Windows 身份验证。我也使用微软的驱动程序使用 Windows 凭据连接到 SQL 服务器。我有一个问题,每次我重新加载或重新部署应用程序时,我都必须重新启动 tomcat。经过一番谷歌搜索后,我发现 dll 已经加载,因此无法重新加载。

我真的需要重新部署应用程序,因为我需要更新一些功能,而且每次我更新应用程序时要求管理员重新启动 tomcat 是非常令人沮丧的。

当我对 glassfish 做同样的事情时,我设法以某种方式解决了这个问题,但无法使用 tomcat 进行管理

0 投票
1 回答
5468 浏览

spring - Spring Security 角色层次结构问题

我试图在使用 Waffle NTML 进行身份验证时启用 Spring Security 中的角色层次结构投票,但存在一些未知问题,即继承的角色不会像预期的那样显示为主体上的权限,从而阻止拦截 url 中的 hasRole 表达式和使用授权 jsp taglibs .

我一直在根据以下指南集成华夫饼:https ://github.com/dblock/waffle/blob/master/Docs/spring/SpringSecuritySingleSignOnFilter.md

这可以使用标准RoleVoter在应用程序中按预期自行工作,但是当我尝试自定义它以使用我自己也测试过的RoleHierarchyVoter(使用 LDAP 身份验证提供程序)并且角色层次结构完全一样时,问题就开始了预期的。

Waffle 和 RoleHierarchyVoter 组合方法的配置如下:

华夫饼特定配置

熟悉的 Spring 安全配置

0 投票
1 回答
7959 浏览

spring-mvc - 如何使用 Spring Security 获取当前用户的角色

我正在尝试获取已通过身份验证的当前用户的所有角色并在 JSP 页面中显示它们。

我注意到这里列出了一些内置表达式:http: //static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html但我没有看到任何将列出所有角色。

0 投票
2 回答
690 浏览

grails - 有没有办法在 grails 应用程序中添加第三方 servlet?

我是 grails 新手,想知道是否有办法在 grails 应用程序中添加第三方 servlet?

我正在尝试将Waffle与 grails 一起使用。我成功地能够在 MVC 应用程序中使用 Spring Security 使用 Waffle,如下所述:https ://github.com/dblock/waffle/blob/master/Docs/spring/SpringSecurityAuthenticationProvider.md

在我的 MVC 应用程序中,我能够添加这样的 bean 进行身份验证: