Когда бэкэнд вызывается путем передачи idToken, используемого на клиенте (Web, Android и почтальон), возникает исключение:
{
"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>
jwt.io
{
"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"
}
}
Я уже удалил и заново создал учетную запись службы и проекты. Поскольку я могу получить доступ к Firebase через SDK, я считаю, что он правильно настроен.
Аутентификация работала несколько месяцев go.