【问题标题】:BASIC authentication in jersey JAX-RS service and Tomcat 6.0 getting failedjersey JAX-RS 服务和 Tomcat 6.0 中的 BASIC 身份验证失败
【发布时间】:2013-02-16 00:03:53
【问题描述】:

我正在尝试使用 Tomcat 6.0 和 JAX-RS jersey 实现在我的服务中进行基本身份验证。

以下是我遵循的实施步骤:

1) 在 server.xml 中添加 Realm,如下所示:

<Realm className="org.apache.catalina.realm.JDBCRealm" connectionName="XXX" connectionPassword="YYY" connectionURL="jdbc:oracle:thin:@localhost:1521/orcl" driverName="oracle.jdbc.OracleDriver" roleNameCol="role_name" userCredCol="user_pass" userNameCol="user_name" userRoleTable="user_roles" userTable="users"/>

我在其他 JSP 应用程序中使用的相同领域,在那里工作正常。

2) 下面是 web.xml

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.infy.security</param-value>
    </init-param>       
    <init-param>
        <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
        <param-value>com.sun.jersey.api.container.filter.RolesAllowedResourceFilterFactory</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<security-constraint>      
  <web-resource-collection>
      <web-resource-name>BasicDemo</web-resource-name>
      <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
      <role-name>*</role-name>
  </auth-constraint>
  <!-- <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint> -->
</security-constraint>
<login-config>
  <auth-method>BASIC</auth-method>
  <!-- The realm name is typically displayed by the browser in the login dialog box. -->
  <realm-name>Login</realm-name>      
</login-config>

以下是服务:

@Path("/authenticate")
@RolesAllowed({"Admin","Guest"})
public class BasicAuthenticationSecurity {

@GET
@Path("/wbiPing")
@Produces(MediaType.TEXT_PLAIN) 
@RolesAllowed("Admin")
public Response wbiPing(){

    System.out.println("Pinged!!!");
    return Response.ok("Pinged!!!").build();
}

}

实施后,无论登录身份验证弹出窗口中的输入是什么(即使用户是“管理员”),我都会收到未身份验证错误页面。以下是网址:

http://localhost:8002/BASICAuthentication/rest/authenticate/wbiping

如果我遗漏了什么,请告诉我。

谢谢,

【问题讨论】:

  • 您是否使用 fiddler 或 charlese 代理等工具跟踪过该流量?这可能有助于弄清楚发生了什么。
  • 在 chrome 中尝试了 REST 控制台,但无法跟踪任何内容 :(
  • 也许尝试添加一个方法:GET
  • 试过了,但没有用...除了领域,我需要在 server.xml 中做更多的更改吗?还有其他提示吗?
  • 我会查看您的 server.xml。这一切看起来都不错。我会把我们的发给你,但我们使用 ldap...

标签: java web-services rest tomcat jersey


【解决方案1】:

我遇到了同样的问题,我无法使用 server.xml 中的领域定义运行它。

我一搬家就开始工作了

<Realm
    className="org.apache.catalina.realm.JDBCRealm"
    driverName="oracle.jdbc.driver.OracleDriver"
    connectionURL="jdbc:oracle:thin:@//10.21.105.185:1552/CRODODEV.DE.MADM.NET"
    connectionName="1234556"
    connectionPassword="*****"
    userTable="cpim_users"
    userNameCol="user_name"
    userCredCol="password"
    userRoleTable="cpim_user_roles"
    roleNameCol="role_name"
    digest="sha-256" />

进入 context.xml。 TomCat 的日志记录告诉我服务器没有使用 JDBC 领域。

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 2015-12-18
    • 1970-01-01
    • 2016-08-20
    • 2011-04-22
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多