2016-07-29 11 views
0

Ich benutze Spring mit oauth2, die ein JWT-Token freigeben. Ich habe einen funktionierenden Prototyp, auf dem ich die Annotation @ PreAuthorize für meine Zwecke verwenden kann.Sicherheitsentscheidung von einem JWT in einem Federhalteregler

// public class Foo { private String md5Hash; } with getters, setters, etc. 

@RestController 
@RequestMapping("/foo") 
public class WebController { 

    @PreAuthorize("hasAnyAuthority('client','module')") 
    @RequestMapping(method = RequestMethod.GET) 
    public String readFoo(Foo foo) { 
     String username = /* extract jwt info */ 
     if (verify(username, foo.getMd5Hash())) 
      return "you CAN'T"; 
     return "you can"; 
    } 

    boolean verify(String user, String md5) {...} 

Im JWT-Token ist der Benutzername definiert. Wie kann ich den Benutzernamen von hier lesen?

Außerdem, wie Sie sehen können, habe ich eine andere Sicherheitsentscheidung zu treffen ... ist das ein guter Weg oder gibt es eine Spring-Funktion, die ich nicht kenne?

Antwort

0

Das wird JWT Token in der HTTP-Header-Eigenschaft Autorisierung gesendet werden, während wie

Authorization

anfordernden: Bearer {jwt-token}

Sie den HTTP-Header in anfordern Mapping zugreifen können wie ,

@PreAuthorize("hasAnyAuthority('client','module')") 
@RequestMapping(method = RequestMethod.GET) 
public String readFoo(Foo foo, @RequestHeader(value="Authorization") String bearerToken) { 
    // you can use any JWT libraries return object version of jwt 
    String username = extractJwtToken(bearerToken); 
} 

überprüfen Sie diese Seite https://jwt.io/, verwenden die verfügbaren Java-Bibliotheken, um herauszufinden, und in Bezug auf,

Ich habe eine andere Sicherheitsentscheidung

Ja, Sie haben zu nehmen, JWT behauptet, nur das enthält, was es tun kann, und Sie benötigen die Berechtigung zu tun, zu prüfen, ob ein Benutzer (Token) ausreichende Berechtigung hat oder Zugang um bestimmte Operationen auszuführen, und es muss nur von Ihrem Ende aus getan werden, seinem Teil der Geschäftslogik.

+0

Es funktioniert und alles ist klar, danke! –