1

我们正在尝试通过拦截对 Cube 的传入请求并根据需要使用 Spring Security Filter 对它们进行身份验证,从而为我们的 ActivePivot tomcat servlet 启用自定义凭据处理层。如果用户名和密码有效,我们的系统会为登录用户提供一个“API 密钥”,并且我们希望通过某种方式让 Excel 在使用 HTTP 基本身份验证登录后使用该密钥。

当在 Excel“数据连接向导”中输入登录凭据以连接到 AP Cube 时,它​​会通过对 Cube URL 执行 GET 的正常过程,我们返回 401(因为标题中不存在 API 密钥)带有“WWW-Authenticate: Basic Realm=...”标头,它通过获取带有“Authenticate: Basic ...”标头的相同URL来响应,我们使用该标头执行用户名/密码登录并获取API密钥并实际返回请求的内容。这一切都很好,并且按预期工作。

问题是,我们能否让 Excel 记住它已成功通过身份验证,并在以后的请求中仅在“Authenticate”标头中传递 API 密钥?到目前为止,我已尝试将 API 密钥发送回响应中的“身份验证”标头中,但 Excel 似乎没有注意到这一点。是否有一种标准方法可以将基本身份验证的“登录令牌”传递给客户端?

这将解决我们的两个问题:1)我们不必在每次发出请求时都进行登录,2)我们不会获得双倍的请求数(GET -> 401 -> GET with Auth - > return) 因为 Excel 会知道它已经过身份验证。

4

2 回答 2

0

根据这篇文章,如果不破解某种重定向,我想要的似乎是不可能的:

http://www.vc2go.com/2009/11/cookie-based-authentication-does-not-work-with-excel.html

问题:世界上最大的 IT 公司之一的一些安全专家(我认为)发现从 Excel 发送网络请求的 cookie 是一件坏事。例如,当您在 Excel 中选择 URL 链接时,在 IE 中生成的请求将永远不会发送任何 cookie。该请求将在 Internet Explorer 中正常打开,但用户必须为他们访问的每一行登录到我们的系统,这很糟糕。

如果您基于会话或 cookie 进行身份验证,那么您基本上会陷入困境。

于 2013-05-21T19:29:40.170 回答
0

你能看看spring security的PRE_AUTH_FILTER: http ://static.springsource.org/spring-security/site/docs/3.1.x/reference/preauth.html 问候,

于 2013-05-20T01:18:55.870 回答