2017-05-31 14 views
0

にログインしていることを確認します。AWS Cognitoと通信するためにJavaをバックエンドとして使用しています。私はログイン、ログアウト、ユーザーの作成、サインアウトなどの機能を利用できます。私はまた、linkにアクセストークンを確認することができます:ユーザがaws cognito、JAVA

しかし、私はユーザーがログインしているかどうかを確認したいと思います。 JAVAでは、ブール値を返すisLoggedin()関数がありますか、トークンが取り消されているかどうかを確認する方法はありますか?これらの機能はAndroidとiOSに存在しますが、Javaについてはどうでしょうか。

私は、トークンが有効であれば、これは検証しますが、トークンが適切なフォーマットである場合にのみ確認すると思った:

// 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; }   

私はユーザーがログインしているかどうかを確認したい、私は見つかっていません。そうする適切な方法。

マハロ

+0

ようこそSO、あなたがこの問題を解決しようとしたいくつかのコードまたは少なくともアプローチを提供してくださいします。 –

答えて

0

は、私の周りの仕事を見つけました:

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; 
     } 
    }