gpt4 book ai didi

Ajax 身份验证不让浏览器弹出登录对话框

转载 作者:行者123 更新时间:2023-12-04 14:52:57 24 4
gpt4 key购买 nike

我正在设计一个 RESTful Web 服务(JBoss + RESTeasy)。 UI 程序员正在编写一个将使用它的 Ajax Web 应用程序。 Web 应用程序将是一个 HTML 页面,所有内容都使用 JavaScript 完成。为了安全起见,所有流量都通过 SSL。

目前我正在使用基本身份验证。 UI 程序员可以显示一个对话框来获取用户名和密码,并将“授权:基本 xxxxx”放在标题中。不幸的是,如果密码错误,就会出现丑陋的浏览器登录对话框。用户也无法注销。这是无法接受的。

在我们将使用的任何浏览器中,似乎都无法拦截对 XMLHttpRequest 的 401 响应。

基于表单的身份验证对我们不起作用。我们需要在一段时间不活动后自动注销(相当于 session 超时)。当客户端需要 JSON 对象时,我们不能让服务器突然返回登录页面。

JBoss 提供四种身份验证策略:BASIC、FORM、CLIENT-CERT 和 DIGEST。我认为 DIGEST 和 BASIC 有同样的问题。这四个都不是我们想要的。

此 Web 应用程序将是唯一的客户端(目前),因此不需要使用 BASIC。我可以安装任何其他身份验证策略吗?例如,我可以使用 WSSE UsernameToken 的实现吗? (如 O'Reilly RESTful Web Services 一书的第 8 章所述。)服务器将在 WWW-Authenticate header 中发送“WSSE”而不是“Basic”,并且可能浏览器会忽略它并直接通过。

我想在它所属的地方配置安全性——在 JBoss 配置文件中,而不是在我的 RESTful Web 服务中——所以我正在寻找一个可以插入 JBoss 的实现。

最佳答案

如果浏览器无法识别 WWW-Authenticate header 中的身份验证方案,则浏览器将不会显示密码对话框。您最好的选择可能是继续在服务器上使用基本身份验证,同时手动将 header 设置为类似“Basic/MyApp”的 401 响应。

关于Ajax 身份验证不让浏览器弹出登录对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1616277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com