检查用户是否已登录Java的AWS Cognito



我正在使用Java作为后端与AWS Cognito通信。我可以登录,注销,创建用户,登录和其他功能。我还可以通过遵循此链接来验证访问令牌:

,但我想验证用户是否已登录。在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; }        

我想看看用户是否已登录。我找不到适当的方法。

mahalo

我找到了一个工作:

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

最新更新