JAX-RS处理多种身份验证机制

时间:2015-03-01 12:43:45

标签: web-services jax-rs basic-authentication restful-authentication

我正在使用Jersey学习JAX-RS并在JBoss EAP 6.3上部署。我正在开发一个测试应用程序,它提供不同客户使用的Web服务。我根据角色和用户名/密码(Realm正确配置和UP& Running)正确设置了基本身份验证系统。当我的客户端应用程序使用WS时,一切正常。

的web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>testWS</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>


  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Realm</realm-name>
  </login-config>


  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Admin Pages</web-resource-name>
      <url-pattern>/test/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>role-admin</role-name>
    </auth-constraint>
  </security-constraint>

  <context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>false</param-value>
  </context-param>
  <context-param>
    <param-name>resteasy.scan.providers</param-name>
    <param-value>false</param-value>
  </context-param>
  <context-param>
    <param-name>resteasy.scan.resources</param-name>
    <param-value>false</param-value>
  </context-param>  

  <servlet>
    <description>Admin test</description>
    <servlet-name>Admin Servlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.test.webservice.utils.AuthPackageClasses</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>


  <servlet-mapping>
    <servlet-name>Admin Servlet</servlet-name>
    <url-pattern>/test/*</url-pattern>
  </servlet-mapping>


</web-app>

我的第二步是通过需要登录表单的Web仪表板来使用相同的Web服务。我的想法是让一个免费的WS来使用登录并在Response中的Cookie中返回一些令牌;相同的令牌存储在我的数据库中。 其他WS必须由注入Cookie的Web仪表板使用,服务器必须验证存储在Cookie中的令牌。

如何验证来自两个不同身份验证系统的用户?

我应该重新设计整个身份验证系统并设置一个监听器:

  • 如果它是Cookie中的标记 - &gt;验证令牌
  • 否则验证基本身份验证

有没有办法通过配置 web.xml

来实现这一目标

如果我想实施第三个身份验证系统怎么办?我的问题是拥有相同的context-root并通过不同的方式验证调用者。

0 个答案:

没有答案