2017-04-05 13 views
0

クライアントとウェブサーバーの間で休憩トークンセキュリティを実装しようとしています。 HTTP認証ヘッダを取得し、クライアントが有効かどうかを確認するフィルタを実装しました。しかし、何らかの理由で私のTomcatが例外をスローし始めています。フィルタのTomcatでジャージーフィルタースロー例外が発生する

私の実装は次のとおりです。私はTomcatのから入手

import java.security.Principal; 

    import javax.ws.rs.NotAuthorizedException; 
    import javax.ws.rs.container.ContainerRequestContext; 
    import javax.ws.rs.container.ContainerRequestFilter; 
    import javax.ws.rs.core.HttpHeaders; 
    import javax.ws.rs.core.Response; 
    import javax.ws.rs.core.SecurityContext; 
    import javax.ws.rs.ext.Provider; 
    import javax.annotation.Priority; 
    import javax.ws.rs.Priorities; 


     @Secured 
     @Provider 
     @Priority(Priorities.AUTHENTICATION) 
     public class AuthenticationFilter implements ContainerRequestFilter { 

      @Override 
      public void filter(ContainerRequestContext requestContext) throws IOException {...} 

例外は次のとおりです。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>SamuraiForge</groupId> 
    <artifactId>0</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 

     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 

    </plugins> 
    </build> 

    <dependencies> 

     <dependency> 
      <groupId>net.snaq</groupId> 
      <artifactId>dbpool</artifactId> 
      <version>7.0.1</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.codehaus.jettison/jettison --> 
     <dependency> 
      <groupId>org.codehaus.jettison</groupId> 
      <artifactId>jettison</artifactId> 
      <version>1.3.8</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/log4j/log4j --> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>2.8.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.8.1</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.8.1</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --> 
     <dependency> 
      <groupId>com.lmax</groupId> 
      <artifactId>disruptor</artifactId> 
      <version>3.0.0</version> 
     </dependency> 



     <!-- https://mvnrepository.com/artifact/org.slf4j/log4j-over-slf4j --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      <version>1.7.24</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.24</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-simple</artifactId> 
    <version>1.7.24</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/postgresql/postgresql --> 
<dependency> 
    <groupId>postgresql</groupId> 
    <artifactId>postgresql</artifactId> 
    <version>9.1-901-1.jdbc4</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-server --> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>1.19.3</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>jsr311-api</artifactId> 
      <groupId>javax.ws.rs</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client --> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>1.19.3</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-servlet --> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-servlet</artifactId> 
    <version>1.19.3</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-json --> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.19.3</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api --> 
<dependency> 
    <groupId>javax.ws.rs</groupId> 
    <artifactId>javax.ws.rs-api</artifactId> 
    <version>2.1-m05</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api --> 
<dependency> 
    <groupId>javax.annotation</groupId> 
    <artifactId>javax.annotation-api</artifactId> 
    <version>1.3</version> 
</dependency> 


<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-jaxrs --> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-jaxrs</artifactId> 
    <version>1.9.13</version> 
</dependency> 


<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl --> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.13</version> 
</dependency> 

    </dependencies> 
</project> 

任意のアイデア:

br 05, 2017 12:09:13 PM org.apache.catalina.core.StandardWrapperValve invoke 
    GRAVE: Servlet.service() for servlet [JAX-RS Servlet] in context with path [/My_App] threw exception [Servlet execution threw an exception] with root cause 
    java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 
     at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:120) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:669) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 

私はのthiM POMを持っていますか?アンドレアスで述べたように

+0

'javax.ws.rs:jsr311-api:1.1.1'を' javax.ws.rs: .ws.rs:javax.ws.rs-api:2.1-m05'?それはあなたの問題の原因に関する私の推測だろう。 – Andreas

+0

'UriBuilder.uri(String)'は、** Since:2.0 **としてリストされています。 'jersey-server-1.19.3.jar'は' UriBuilder'のバージョン1.1実装を提供します。つまり、 'com.sun.jersey:jersey-server:1.19.3'は' javax.ws.rs:javax.ws.rs-api'のバージョン2.xと互換性がありません。 – Andreas

+0

com.sun.jersey:jersey-server:1.19ですが、ジャージーの最後のバージョンです。どうすれば問題を解決できますか? @NameBindingを使用する必要はありません。 –

答えて

1

、これがエラーの原因である

<dependency> 
    <groupId>javax.ws.rs</groupId> 
    <artifactId>javax.ws.rs-api</artifactId> 
    <version>2.1-m05</version> 
</dependency> 

を削除します。しかし、あなたは実際にそれを使用しようとしているようです。使用しているContainerRequestFilterは、JAX-RS 2.0ですが、Jersey 1.x(JAX-RS 1.x)を使用しています。 JAX-RS 1.xでは、いくつかのJAX-RS 2 APIを使用することはできません。これにはContainerRequestFilterが含まれます。

ジャージー1.xにはフィルターContainerRequestFilterがありますが、APIは少し異なります。 Jersey 1.xではこれを使用できますが、JAX-RS ContainerRequestFilterにはいくつかの機能はありません。例えば、ジャージーフィルターにはSecurityContextという概念はありません。したがって、あなたはsetSecurityContext(new YouSecurityContext())を行うことができます。これは、あなたがフィルタを使用しているように見えるので、あなたにとっては問題になる可能性があります。あなたはそれをするために何か他の方法を理解する必要があります。それ以外の場合は、JAX-RS 2を使用できるJersey 2.xの完全なスイッチを作成する必要があります

関連する問題