weblogic 12c 基本身份验证不提示输入用户标识
weblogic 12c basic authentication not prompting for userid
我正在尝试为部署在 Weblogic 12c 上的 servlet 配置基本身份验证。这是我的 web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>TestServlets</web-resource-name>
<url-pattern>/ReasonServlet</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TestServiceRole</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
<security-role>
<role-name>TestServiceRole</role-name>
</security-role>
<servlet>
<servlet-name>ReasonServlet</servlet-name>
<servlet-class>com.test.go.track.servlets.ReasonServlet</servlet-class>
</servlet>
<servlet>
<servlet-mapping>
<servlet-name>ReasonServlet</servlet-name>
<url-pattern>/ReasonServlet</url-pattern>
</servlet-mapping>
这是我的 weblogic.xml:
<security-role-assignment>
<role-name>TestServiceRole</role-name>
<principal-name>TestUsers</principal-name>
</security-role-assignment>
我还做了以下操作:
- 创建了一个用户 - test,创建了一个组 - TestUsers
- 将用户测试添加到 TestUsers
- 创建了一个角色 - TestServiceRole,添加了 TestUsers 组作为角色条件。
- 进行这些更改和应用程序部署后重新启动 weblogic。
现在,当我尝试通过浏览器访问我的 servlet 时,我没有得到任何 pop-up 来输入 http userid/password。我能够像没有配置安全性一样访问 servlet。
但是,当我通过 SoapUI/java 客户端测试我的 servlet,并在 HTTP header(授权:基本)中明确设置一些错误的 http 凭据(base64 编码 userid:wrongpassword)时,然后weblogic 拒绝请求并返回 401-authorization required 错误。
当请求中没有http授权header时,授权访问。
我在 weblogic 中是否缺少其他一些配置?
无论是否存在 http auth header,我都希望始终进行基本身份验证检查。
请帮忙!!在过去的两天里一直在为这个问题而苦苦挣扎..
谢谢!
您不需要指定域名,它会自动与 Weblogic 提供的任何内容一起工作。
在 weblogic.xml 中使用外部定义而不是主体名称。
<security-role-assignment>
<role-name>TestServiceRole</role-name>
<externally-defined/>
</security-role-assignment>
结果证明是我这边的部署问题。我原来的 post 中的配置很好。感谢那些回答我问题的人!!
我正在尝试为部署在 Weblogic 12c 上的 servlet 配置基本身份验证。这是我的 web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>TestServlets</web-resource-name>
<url-pattern>/ReasonServlet</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TestServiceRole</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
<security-role>
<role-name>TestServiceRole</role-name>
</security-role>
<servlet>
<servlet-name>ReasonServlet</servlet-name>
<servlet-class>com.test.go.track.servlets.ReasonServlet</servlet-class>
</servlet>
<servlet>
<servlet-mapping>
<servlet-name>ReasonServlet</servlet-name>
<url-pattern>/ReasonServlet</url-pattern>
</servlet-mapping>
这是我的 weblogic.xml:
<security-role-assignment>
<role-name>TestServiceRole</role-name>
<principal-name>TestUsers</principal-name>
</security-role-assignment>
我还做了以下操作:
- 创建了一个用户 - test,创建了一个组 - TestUsers
- 将用户测试添加到 TestUsers
- 创建了一个角色 - TestServiceRole,添加了 TestUsers 组作为角色条件。
- 进行这些更改和应用程序部署后重新启动 weblogic。
现在,当我尝试通过浏览器访问我的 servlet 时,我没有得到任何 pop-up 来输入 http userid/password。我能够像没有配置安全性一样访问 servlet。
但是,当我通过 SoapUI/java 客户端测试我的 servlet,并在 HTTP header(授权:基本)中明确设置一些错误的 http 凭据(base64 编码 userid:wrongpassword)时,然后weblogic 拒绝请求并返回 401-authorization required 错误。
当请求中没有http授权header时,授权访问。
我在 weblogic 中是否缺少其他一些配置? 无论是否存在 http auth header,我都希望始终进行基本身份验证检查。
请帮忙!!在过去的两天里一直在为这个问题而苦苦挣扎..
谢谢!
您不需要指定域名,它会自动与 Weblogic 提供的任何内容一起工作。
在 weblogic.xml 中使用外部定义而不是主体名称。
<security-role-assignment>
<role-name>TestServiceRole</role-name>
<externally-defined/>
</security-role-assignment>
结果证明是我这边的部署问题。我原来的 post 中的配置很好。感谢那些回答我问题的人!!