Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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不验证IdToken_Java_Firebase_Spring Boot_Firebase Authentication_Firebase Admin - Fatal编程技术网

Java Firebase不验证IdToken

Java Firebase不验证IdToken,java,firebase,spring-boot,firebase-authentication,firebase-admin,Java,Firebase,Spring Boot,Firebase Authentication,Firebase Admin,通过传递客户端(Web、Android和Postman)上使用的idToken调用后端时,会发生异常: { "timestamp": 1581447909769, "status": 401, "error": "Unauthorized", "message": "Authentication Failed: com.google.firebase.auth.FirebaseAuthException: Firebase ID token has expired

通过传递客户端(Web、Android和Postman)上使用的idToken调用后端时,会发生异常:

{
    "timestamp": 1581447909769,
    "status": 401,
    "error": "Unauthorized",
    "message": "Authentication Failed: com.google.firebase.auth.FirebaseAuthException: Firebase ID token has expired or is not yet valid. Get a fresh ID token and try again. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.",
    "path": "/api/references"
}
后端能够访问firebase资源,例如:

FirebaseAuth.getInstance().getUser("SOME_ID")
只有在验证令牌时才会发生错误:

FirebaseAuth.getInstance().verifyIdToken(authenticationToken.getToken());
设置:

  @Bean
    public FirebaseAuth firebaseAuth() throws IOException {

        InputStream inputStream = FirebaseAuthConfig.class.getClassLoader().getResourceAsStream("solicite-service-auth.json");

        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredentials(GoogleCredentials.fromStream(inputStream))
                .setDatabaseUrl("https://my-project-auth.firebaseio.com")
                .build();

        FirebaseApp.initializeApp(options);
        return FirebaseAuth.getInstance();
    }



        <dependency>
            <groupId>com.google.firebase</groupId>
            <artifactId>firebase-admin</artifactId>
            <version>6.12.1</version>
        </dependency>
我已经删除并重新创建了服务帐户和项目。由于我可以通过SDK访问Firebase,我相信它的配置是正确的


身份验证在几个月前工作。

错误消息告诉您传递的ID令牌无效。这里没有足够的信息来说明原因。“您必须进行一些调试,并找出为什么值不能像您预期的那样验证。@DougStevenson起初我认为问题出在客户机上。从那时起,我就开始使用邮递员来发出请求。我根据返回的json发出请求RESTAPI,检索idToken并发出请求将其传递到后端。我的后端仅在存在身份验证令牌时进行验证,如果它存在,它将尝试在Firebase中进行验证。我一直在调试库,但仍然找不到错误。我希望有人看到并说这是一个简单的错误,我忘了在firebase控制台上配置一些东西。它说您的令牌已过期或尚未生效(很可能是前者)。如果您确定ID令牌未过期,请确保您的服务器时钟已同步。@HiranyaJayathilaka问题实际上是服务器时钟和我桌面上的时钟。我在巴西,今年我们没有夏天。关键是我的机器是准时的,但火力基地是错误的。我不得不在我的计算机上添加一个小时,令牌开始工作,几天后firebase取消了夏令时,现在一切正常。错误消息告诉您传递的ID令牌无效。这里没有足够的信息来说明原因。“您必须进行一些调试,并找出为什么值不能像您预期的那样验证。@DougStevenson起初我认为问题出在客户机上。从那时起,我就开始使用邮递员来发出请求。我根据返回的json发出请求RESTAPI,检索idToken并发出请求将其传递到后端。我的后端仅在存在身份验证令牌时进行验证,如果它存在,它将尝试在Firebase中进行验证。我一直在调试库,但仍然找不到错误。我希望有人看到并说这是一个简单的错误,我忘了在firebase控制台上配置一些东西。它说您的令牌已过期或尚未生效(很可能是前者)。如果您确定ID令牌未过期,请确保您的服务器时钟已同步。@HiranyaJayathilaka问题实际上是服务器时钟和我桌面上的时钟。我在巴西,今年我们没有夏天。关键是我的机器是准时的,但火力基地是错误的。我不得不在我的电脑上加上一个小时,代币开始工作,几天后firebase取消了夏令时,现在一切都正常了。
{
  "iss": "https://securetoken.google.com/my-project-auth",
  "aud": "my-project-auth",
  "auth_time": 1581453521,
  "user_id": "SOME_USER_ID",
  "sub": "SOME_USER_ID",
  "iat": 1581453521,
  "exp": 1581457121,
  "email": "teste@teste.com",
  "email_verified": false,
  "firebase": {
    "identities": {
      "email": [
        "teste@teste.com"
      ]
    },
    "sign_in_provider": "password"
  }
}