weblogic 12c基本身份验证没有提示用户ID

时间:2015-06-09 20:27:25

标签: java java-ee servlets weblogic weblogic12c

我正在尝试为部署在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> 

我也做了以下事情:

  1. 创建了一个用户 - 测试,创建了一个组 - TestUsers
  2. 将用户测试添加到TestUsers
  3. 创建了一个角色 - TestServiceRole,将TestUsers组添加为角色条件。
  4. 进行这些更改和应用程序部署后重新启动weblogic。
  5. 现在当我尝试通过浏览器访问我的servlet时,我没有得到任何弹出窗口输入http用户名/密码。我可以访问servlet,就好像没有配置安全性一样。

    但是,当我通过SoapUI / java客户端测试我的servlet,并在HTTP头(Authorization:Basic)中显式设置了一些错误的http凭据(base64编码的userid:wrongpassword)时,weblogic拒绝了需要401授权的请求错误。

    如果请求中没有http授权标头,则授予访问权限。

    weblogic中是否还有其他一些配置? 我希望始终发生基本身份验证检查是否存在http auth标头。

    请帮忙!!最近两天在这个问题上苦苦挣扎..

    谢谢!

3 个答案:

答案 0 :(得分:1)

原来这是我身边的部署问题..原帖中的配置很好。感谢那些回答我问题的人!!

答案 1 :(得分:0)

您无需指定领域名称,它将自动与Weblogic提供的任何内容一起使用。

答案 2 :(得分:0)

使用weblogic.xml中的外部定义而不是主体名称。

<security-role-assignment>
  <role-name>TestServiceRole</role-name>
  <externally-defined/>
</security-role-assignment>