java ee http-basic 身份验证错误页面

2024-04-27

使用 Java EE 中基于表单的身份验证来保护 Web 应用程序, 我们可以指定登录和错误 html 页面。http://docs.oracle.com/javaee/5/tutorial/doc/bncbe.html http://docs.oracle.com/javaee/5/tutorial/doc/bncbe.html

Example:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>file</realm-name>
    <form-login-config>
        <form-login-page>/logon.jsp</form-login-page>
        <form-error-page>/logonError.jsp</form-error-page>
    </form-login-config>
</login-config>

使用 HTTP Basic 身份验证,我们无法指定登录页面 因为客户端 Web 浏览器有责任获取用户的登录名/密码(通常使用弹出窗口)。

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>

但是,我们仍然需要指定一个错误页面。那可能吗?如何? 也就是说,使用 HTTP-Basic 身份验证(和 Java EE),如果提供的登录/密码不正确(如基于表单的身份验证),我们需要显示特定的错误页面。


不,在 BASIC 身份验证中您无法配置loginpage/errorpage。这是不同身份验证的工作原理:

表格登录:

  • 客户端向安全页面发出请求/application/securedpag
  • 服务器发送200 Status code along with login.jsp在登录配置中配置
  • 客户填写j_username and j_password并提交给j_security_check servlet
  • Servlet j_security_check在服务器端调用,验证j_username and j_password. If authenication is successful, the request is forwarded/redirected to the secured page. If the authentication fails, the error page is sent(在登录配置中配置)。

基本登录:

  • 客户端向安全页面发出请求/application/securedpage

  • 服务器发送401 status code要求客户发送Authorization header with value containing Base64 encoded username and passowrd.

  • 浏览器将显示弹出窗口询问用户名和密码。

  • 浏览器将再次向安全页面发出请求/application/securedpage随着Authorization header with value containing Base64 encoded username and passowrd

  • If authenication is successful, the request is forwarded/redirected to the secured page. If the authentication fails, again the challange i.e, 401状态代码`被发送到浏览器。

  • 浏览器将再次显示弹出窗口询问用户名和密码。

    BASIC 登录流程清楚地表明没有响应正文发送到的位置。服务器仅发送401 status code用于首次询问凭据或身份验证失败时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java ee http-basic 身份验证错误页面 的相关文章

随机推荐

  • Rails 3.1 与 3.0 AJAX 语法差异。 jQuery 中的等效语句?

    完成 使用 Rails 进行敏捷 Web 开发 第 4 版并点击开始 AJAX 部分 第 11 章迭代 F2 在示例代码中 使用 Rails 3 0 的书籍建议创建 app views line items create js rjs 文件
  • Python——“对象布局”

    有人可以描述以下异常吗 什么是 对象布局 以及它是如何定义的 谢谢 Traceback most recent call last File test gui py line 5 in
  • 表面参数化

    我正在尝试在表面网格上获取参数化表面 从 STL 格式文件中读取 我阅读了 CGAL 示例目录提供的一些有关参数化的示例 我知道应该提供接缝线才能在任意表面上获得参数化表面 但我还是不明白如何制作接缝线 下面是我到目前为止的代码 总而言之
  • 检查 Web 服务中的 Json

    我的 json 有问题 我希望我的 Json 看起来像 data phoneId 1 token APA91bF2tN5g1TtULFE5tysRMAarygjX4w9hjTGCqT3SL PwiMV6aqTtkV3lpqLkc7msVfE
  • Google Sheets 转置具有多个值的数据

    我试图按如下方式显示示例数据 我可以使用数据透视表和多个值来完成此操作 没有任何问题 但希望找到一种使用查询或其他方法的方法 使用下面的公式部分解决了此问题 但不包括 其他 列 Index Transpose Unique Filter B
  • 为什么输出窗口无法显示结果。图像处理-线条检测

    该霍夫变换程序应该在执行时显示源图像 输出图像 带有图像的边缘检测结果窗口 但是 即使源图像和边缘检测结果 输出图像窗口也不会显示任何内容 链接https github com eToTheEcs hough transform blob
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 如何解决 CruiseControl.NET 中 任务中的“只能指定一个项目”错误

    我正在尝试以相当直接的方式使用 CruiseControl NET 版本 1 3 0 2918 中的任务
  • 更改数据的时区值

    我必须导入不带时区信息的数据在其中 但是 我知道我要导入的数据的具体时区 但我需要timestamp with time zone数据库中的格式 一旦我导入它并将时间戳数据类型设置为timestamp with time zone Post
  • Nancyfx 通过 HTTPS 自托管

    我尝试以自托管模式启动 nancyfx 网络服务器 执行以下代码时一切正常 public static void Main string args var hostConfig new HostConfiguration UrlReserv
  • 如何在 .NET 中操作 VB6 集合?

    我目前正在为 NET 软件设计一个接口 该接口将由 COM 对象 特别是 VB6 使用 虽然我找到了 Microsoft 的许多页面 详细介绍了如何创建 COM 互操作接口 但我目前在设计时对 Collections 的使用感到困惑 我希望
  • ANDROID NDK - android:找不到命令

    我试图完成 Android NDK 中提供的第一个示例练习 我试图在 cygwin 上运行以下命令 android update project p 然而 我得到android command not found error 我检查了我的
  • 套接字是否可以仅针对 recv() 函数设为非阻塞?

    我希望能够打电话recv 不必阻塞 所以我想让它成为非阻塞 但我不希望它在发送数据时是非阻塞的 那么能否将套接字设为非阻塞 recv 函数 或者阻塞 非阻塞模式是否影响所有套接字函数 对于 Windows 您可以使用ioctlsocket
  • 如何验证 SQL Server 流量是否已加密?

    我需要证明我们应用程序连接字符串中的加密设置有效 验证从我们的网站到 SQL Server 的流量是否确实已加密的最简单方法是什么 你可以使用类似的东西Wireshark http www wireshark org 查看通过网络传输的数据
  • 如何搜索包含表情符号的文本?

    我们有一个 MySQL InnoDB 表 带有一个文本字段COLLATE utf8mb4 unicode ci 我需要搜索包含任何表情符号字符的行 我搜索了相当多的问题 但人们似乎有一个他们正在搜索的表情符号列表 我实际上正在寻找一种可以找
  • Powershell调试事件-Action代码块

    我有脚本监视特定目录中的文件创建 我在创建 System IO FileSystemWatcher 后使用 Register ObjectEvent 它工作得很好 但如果我在 Action 代码块中设置断点 IDE 会生成 警告 不会命中
  • 如何修复 titleView 在转换过程中被屏蔽到导航栏的问题?

    在我的视图控制器中我设置titleView to a UIView其中包含一个UIImageView在其图层上使用 setCornerRadius 将其制成圆形 圆圈的上半部分位于导航栏上方 下半部分位于视图上方 如下所示 现在 当我推动此
  • 在 __init__ 中使用属性设置器

    如何在中使用属性设置器 init 没有 pylint 抱怨该属性已在外部定义 init 例如 以下代码仅产生一个异常 该异常被底部的 try 子句捕获 class CircleNotUsingSetterInInit object def
  • 如何在seaborn中记录比例

    我正在使用seaborn 绘制一些生物学数据 我想要一个基因相对于另一个基因的分布 在约 300 名患者中表达 并且以下代码工作正常 graph sns jointplot x Gene1 y Gene2 data data kind re
  • java ee http-basic 身份验证错误页面

    使用 Java EE 中基于表单的身份验证来保护 Web 应用程序 我们可以指定登录和错误 html 页面 http docs oracle com javaee 5 tutorial doc bncbe html http docs or