我们正在尝试通过拦截对 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 会知道它已经过身份验证。