我正在尝试使用 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
如果我遗漏了什么,请告诉我。
谢谢,
最佳答案
我遇到了同样的问题,我无法使用 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 领域。
关于java - Jersey JAX-RS 服务中的 BASIC 身份验证和 Tomcat 6.0 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158554/