Giter Site home page Giter Site logo

sparkinterceptor's Introduction

JaxRsInterceptor

This is SparkJava-based Authentication and Authorization framework.

To use it, you need to place following annotations in your code:

  • In your application class, add the @Scanner annotation with the top-level package name for annotation scanning.
@Scanner("com.minja")   // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
public class App {
  public App() {
    port(8080);
    get("/rest/student/getall", (Request request, Response response) -> {
      return StudentiService.getAll(request, response);	
	});
    delete("/rest/student/delete/:id", (Request request, Response response) -> {
      return StudentiService.delete(request, response);	
	});
    ...
  }
}
  • On all REST endpoints where you need Authentication and/or Authorization, add @JwtSecurity annotation:
@JwtSecurity(path = "/rest/student/getall")
public static String getAll(Request request, Response response) {
  response.type("application/json");
  ...
}

or:

@JwtSecurity(path = "/rest/student/delete/:id", role = "ROLE_ADMIN")
public static String delete(Request request, Response response) {
  response.type("application/json");
  ...
}
  • You need to have a field that holds the JWT key. Place @JwtKey annotation above that field:
@JwtKey
public static Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
  • You need to have a class that is used to fetch user using the credentials embedded in the JWT token. Place @UserProvider annotation above that class and @UserGetter above the method used to obtain a user:
@UserProvider
public class UserRepo {
  @UserGetter
  public User getUser(String username) {
    ...
  }
}

If you want to use Authorization, your User class must contain a filed named role which holds roles (usually as enums).

You need to add to the CLASSPATH following jars:

  • agent.jar
  • aspectjweaver-1.9.6.jar
  • aspectjrt-1.9.6.jar
  • aspectjtools-1.9.6.jar

To start your SparkJava app with the interceptor, add at the end of VM params:

-javaagent:c:\<path-to-aspectj>\aspectjweaver-1.9.6.jar

sparkinterceptor's People

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.