2016-10-06 4 views
0

Ich habe ein Problem mit Abmelde im Frühjahr Sicherheit und oauth2Entfernen nach der Abmeldung in Spring Security access_token OAuth2

Wir sichern aus REST-Service Feder Sicherheit OAuth2.The Token und Ruhe api Endpunkte sind staatenlos und nicht brauchen eine Sitzung.Ich brauche meine Authentifizierung nur einmal Anmeldebestätigung, wenn ich den Abmeldeservice im Rest-Client anrufe, zeigt es 200 Antwort, aber nicht die Autorisierung.Wenn ich den Benutzernamen und das Passwort eingeben, sollte derselbe Benutzer logging.but nicht sein logouting.i löschte auch den Kontext.

hier ist mein Controller

`@Path("oauth2/logout") 
public class LogoutImpl implements LogoutSuccessHandler{ 
private TokenStore tokenStore; 
@Autowired 
public LogoutImpl(TokenStore tokenStore) { 
    this.tokenStore = tokenStore; 
} 
public void setTokenStore(TokenStore tokenStore) { 
    this.tokenStore = tokenStore; 
} 
@Override 
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) 
    throws IOException, ServletException { 
    removeaccess(request); 
    SecurityContextHolder.clearContext(); 
    response.getOutputStream().write("\n\tYou Have Logged Out successfully.".getBytes());} 
public void removeaccess(HttpServletRequest req) { 
    String tokens = req.getHeader("Authorization"); 
String value = tokens.substring(tokens.indexOf(" ")).trim(); 
    OAuth2AccessToken token = tokenStore.readAccessToken(value.split(" ")[0]); 
    tokenStore.removeAccessToken(token); 
    System.out.println("\n\tAccess Token Removed Successfully!!!!!!!!"); 
}} 
` 

Antwort

0

Ich sehe, dass Sie Authorization-Header verwenden, und ich nehme an das Token ein JWT zu sein. Es gibt kein Konzept zum Entfernen oder Widerrufen eines JWT. Es muss von selbst ablaufen. Es gibt Leute mit Sichten, die darauf hinweisen, dass ein Nachteil darin besteht, dass der Server ein Token nicht entziehen kann und nicht für Unternehmensanwendungen verwendet werden kann.

Wenn das gleiche Token vom Client in einer anderen API verwendet wird und der Server das Token analysiert, und wenn es innerhalb der Ablaufzeit ist und nicht verfälscht wird, wird es als TRUE validiert.

Allerdings wäre die Situation anders und die Antwort wäre irrelevant, wenn Sie nicht JWT verwenden.

Verwandte Themen