【问题标题】:BASIC authentication does not show up the authentication popup for the constrained resource second timeBASIC 身份验证不会第二次显示受限资源的身份验证弹出窗口
【发布时间】:2014-01-09 08:40:23
【问题描述】:

我正在尝试 BASIC 身份验证机制。当我第二次尝试访问受限资源时,不会出现用户名和密码的弹出窗口。

以下是我的 tomcat-users.xml 中定义的角色和用户

<role rolename="Admin"/>  
<role rolename="Member"/>
<role rolename="Guest"/>    
<user username="Annie" password="admin" roles="Admin, Member, Guest"/>    
<user username="Diane" password="coder" roles="Member, Guest"/>    
<user username="Ted" password="newbie" roles="Guest"/>    

以下是我的 web.xml 中定义的条目

<web-app>

<display-name>SecurityApp</display-name>    

<servlet>
<servlet-name>BeerAppServlet</servlet-name>    
<servlet-class>com.example.servlets.BeerAppServlet</servlet-class>    
</servlet>    
<servlet-mapping>    
<servlet-name>BeerAppServlet</servlet-name>   
<url-pattern>/Beer/AddRecipe</url-pattern>   
</servlet-mapping>    

<security-role> <role-name>Admin</role-name> </security-role>    
<security-role> <role-name>Member</role-name> </security-role>    
<security-role> <role-name>Guest</role-name> </security-role>   

<security-constraint>
 <web-resource-collection>
  <web-resource-name>Update</web-resource-name>
  <url-pattern>/Beer/AddRecipe/*</url-pattern>
 </web-resource-collection>

<auth-constraint>
 <role-name>Admin</role-name>
 <role-name>Member</role-name>
</auth-constraint>

</security-constraint>

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

</web-app>

我的网络应用程序名称是 SecurityApp。 当我第一次按如下方式访问我的应用程序时 http://localhost:8083/SecurityApp/Beer/AppRecipe 我得到输入用户名和密码的弹出窗口,我输入以下凭据 username=Diane 密码=coder。输入以上凭证后认证成功。

当我第二次输入此网址http://localhost:8083/SecurityApp/Beer/AppRecipe 时。 我没有收到用户名和密码的身份验证弹出窗口。为什么会这样。谁能解释一下

【问题讨论】:

    标签: authentication servlets


    【解决方案1】:

    通过使用basic access authentication,凭据存储在客户端(您的浏览器)。

    网络浏览器负责创建用户名和密码的BASE64-Encode,并在您每次请求到同一页面时自动发送。这意味着您无需重新输入凭据即可立即“登录”。

    您可以关闭并打开浏览器,再次显示用户名/密码对话框。

    【讨论】:

    • 你的回答打消了我的疑虑。一个小的说明在 BASIC 身份验证中,有一种方法可以不将凭据存储在客户端,并且对于受限资源的每个请求,都会打开用户名/密码对话框?
    • 简而言之:不。基本身份验证没有注销功能。您可以使用基于 Web 表单/cookie 的身份验证。
    【解决方案2】:

    因为浏览器会缓存页面和身份验证领域的凭据(用户名、密码),并在您下次访问该页面时自动发送它们。这就是 BASIC 身份验证的工作原理。如果您关闭浏览器(所有实例),它将再次要求提供凭据,除非它被配置为永久存储它们。您可以查看this相关问题。

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2021-10-25
      • 2020-08-28
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      相关资源
      最近更新 更多