2017-05-31 5 views
0

Ich verwende Java als Backend für die Kommunikation mit AWS Cognito. Ich kann mich anmelden, abmelden, Benutzer erstellen, abmelden und andere Funktionen. Ich bin auch in der Lage, ein Zugriffs-Token zu überprüfen, indem Sie diesem link folgen:Überprüfen, ob der Benutzer angemeldet ist aws cognito, JAVA

Aber ich möchte überprüfen, ob ein Benutzer angemeldet ist oder nicht. Gibt es in JAVA eine Funktion isLoggedin(), die einen booleschen Wert zurückgibt, oder gibt es eine Möglichkeit zu sehen, ob der Token widerrufen wird? Diese Funktionen existieren für Android und iOS, aber was ist mit JAVA?

Ich dachte, das überprüft, ob das Token aktiv ist, aber es wird nur überprüft, wenn das Token im richtigen Format ist.

// This parses token to JWT. 
    JWT jwtparser = JWTParser.parse(accessToken); 
    String JWTissuer = jwtparser.getJWTClaimsSet().getIssuer(); 
    JWSHeader header = (JWSHeader) jwtparser.getHeader(); 
    Object token_use = jwtparser.getJWTClaimsSet().getClaim("token_use"); 
    Object exp = jwtparser.getJWTClaimsSet().getClaim("iat"); 
    Date expirationDate = jwtparser.getJWTClaimsSet().getExpirationTime(); 

    // Read in JSON Key file saved somewhere safe 
    File file = new File("jwks.json"); 
    String content = FileUtils.readFileToString(file, "utf-8"); 
    JSONObject JsonObjects = new JSONObject(content); 
    JSONArray keysArray = JsonObjects.getJSONArray("keys"); 
    JSONObject keyString = (JSONObject) keysArray.get(1); 

    if (header.getKeyID().equals(keyString.get("kid")) && token_use.toString().equals("access") && JWTissuer.equals("https://cognito-idp.us-west-2.amazonaws.com/us-west-2_xxxxxxx")) { 
     return true; 
    } else { return false; }   

Ich möchte sehen, ob ein Benutzer angemeldet ist ich ein nicht gefunden haben, geeignete Methode, dies zu tun.

Mahalo

+0

Willkommen bei SO, Bitte geben Sie einen Code oder zumindest einen Ansatz dieses Problem zu lösen versucht. –

Antwort

0

fand ich eine Arbeit um:

public boolean isLoggedin(String accessToken) { 
     GetUserRequest request = new GetUserRequest(); 
     request.withAccessToken(accessToken); 

     AWSCognitoIdentityProviderClientBuilder builder = 
       AWSCognitoIdentityProviderClientBuilder.standard(); 
     builder.withRegion("us-west-2"); 
     AWSCognitoIdentityProvider cognitoCreate = builder.build(); 

     GetUserResult result = cognitoCreate.getUser(request); 

     try { 
      System.out.println("success"); 
      return true; 
     } catch (Exception e) { 
      e.getMessage(); 
      return false; 
     } 
    } 
Verwandte Themen