2017-04-18 3 views
0

Ich versuche Token-basierte Authentifizierung zu implementieren, nach https://github.com/spring-projects/spring-framework/blob/master/src/docs/asciidoc/web/web-websocket.adoc#token-based-authentication.Spring Security "Token-basierte Authentifizierung" für SockJS/STOMP-Web-Socket

Ich benutze Basic Auth für meine HTTP-Anfrage, so dass Spring ein x-auth-Token nach einer erfolgreichen Authentifizierung zurückgibt. Ich füge dieses Token dem Befehl STOMP CONNECT hinzu.

Allerdings bin ich völlig verloren, wie ich bei "Hauptbenutzer = ...;" tun würde. Wie würde ich Prinzip mit dem Token bekommen? Könnte jemand etwas Licht werfen?

+0

Mögliche helfen könnte Duplikat von [Websocket-Authentifizierung und Autorisierung im Frühjahr] (https://stackoverflow.com/questions/45405332/websocket-authentication-and-authorization-in-spring) –

Antwort

0

OPTION A

Wenn Ihr Websocket CONNECT Endpoint ist Frühling gesichert ist, sollten Sie in der Lage sein, den Principal (aka Benutzer) zu bekommen, von Authentication auth = SecurityContextHolder.getContext().getAuthentication(); aufrufen. Von dort würden Sie auth.getPrincipal()

OPTION B

nennen personnaly Ich benutze JWT als mein Token basierte Auth-System. Ich habe eine benutzerdefinierte JWTService, in dem ich eine Methode, den Benutzer aus dem Token

public Authentication getAuthenticationFromToken(String token) { 
    if (token != null) { 
     UserDetails user = getUserFromToken(token); 

     if (user != null) 
      return new UsernamePasswordAuthenticationToken(user, user.getPassword(), user.getAuthorities()); 
    } 

    return null; 
} 

public UserDetails getUserFromToken(String token) { 
    Jws<Claims> jws = Jwts.parser() 
      .requireIssuer("myIssuer") 
      .setSigningKey("myBase64Secret==") 
      .parseClaimsJws(token); 

    String username = jws.getBody().getSubject(); 
    return userDetailsService.loadUserByUsername(username); 
} 

Die Bibliothek, die ich für JWT benutzen Sie wird https://github.com/jwtk/jjwt

Dieses Tutorial auch Sie Setup JWT https://www.toptal.com/java/rest-security-with-jwt-spring-security-and-java

+0

Ich möchte Maschine zu Back-End-Web-Socket-Authentifizierung und Autorisierung implementieren, dort sind keine Benutzerprinzip, wie kann ich dann fortfahren? – Amit

+0

Sieh dir das auch an: https://robertleggett.wordpress.com/2015/05/27/websockets-with-spring-spring-security/ – Marc

Verwandte Themen