【发布时间】: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