Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从服务器(Java)验证firebase令牌(JWT)_Java_Spring Boot_Firebase_Jwt_Firebase Authentication - Fatal编程技术网

是否可以从服务器(Java)验证firebase令牌(JWT)

是否可以从服务器(Java)验证firebase令牌(JWT),java,spring-boot,firebase,jwt,firebase-authentication,Java,Spring Boot,Firebase,Jwt,Firebase Authentication,浏览器客户端-使用Firebase登录,并在本地存储中具有Firebase用户ID和令牌 { "typ": "JWT", "alg": "HS256" } { "v": 0, "d": { "provider": "password", "uid": "xxxxd757-5f7f-xx0c-adb1-xxe8ce77d3a0" }, "iat": 1460560833 } 当浏览器调用服务器(RESTAPI端点)时,令牌作为请求头传递 现在,服务器配置

浏览器客户端-使用Firebase登录,并在本地存储中具有Firebase用户ID和令牌

{
  "typ": "JWT",
  "alg": "HS256"
}
{
  "v": 0,
  "d": {
    "provider": "password",
    "uid": "xxxxd757-5f7f-xx0c-adb1-xxe8ce77d3a0"
  },
  "iat": 1460560833
} 
当浏览器调用服务器(RESTAPI端点)时,令牌作为请求头传递

现在,服务器配置了Firebase机密


我的问题:是否可以在服务器端验证firebase颁发的令牌?服务器不用于身份验证(用户名/密码验证通过浏览器中的firebase api完成)。

是的,这是可能的。在Java中有许多用于处理JSON Web标记的库。这是一个示例:

我建议使用此库:


来自专注于安全的公司的具有非常简洁API的开源项目。

感谢luboskrnac和Mark B。我尝试了Java jwt和jjwt库,并在代码中使用了jjwt

@Test
public void tokenValidateTest() {
    String token = "exX0xXAi0iJKV1QiLCJhbGciOiJIUzI1NiJ9.eyXK2IjxxxJkIjp7InByb3ZpZGVyIjoicGFzc3dvcmQiLCJ1aWQiOiI5NDA2ZDc1Ny01ZjdmLTQ0MGMtYWRiMS05MmU4Y2U3N2QzYTBjKSwiaWF0IjoxNDYwMNYwODMzxQ.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    String secret = "6x3Ox29Xx1xxxXXiI0P3PL5pWdNUE5sPcXXXLxxxX";

    try {
        Claims claims = Jwts.parser().setSigningKey(secret.getBytes("UTF-8")).parseClaimsJws(token).getBody();

        Date issuedDate = claims.getIssuedAt();


        assert(issuedDate.before(new Date()));

    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

从2020年11月21日起,我将使用firebase admin,这将是验证jwt的更简单的方法

FirebaseToken decodedToken=FirebaseAuth.getInstance().verifyIdToken(idToken);
字符串uid=decodedToken.getUid()