Безопасен ли поток аутентификации клиента Firebase? - PullRequest
0 голосов
/ 03 ноября 2018

Я использую https://github.com/firebase/firebase-admin-go в приложении Go на моем сервере.

После просмотра документации я создаю auth.Client каждый раз, когда проверяю идентификационный токен. E. g.:

client, err := firebaseApp.Auth(ctx)
if err != nil {
    return "", err
}
token, err := client.VerifyIDToken(ctx, idToken)
if err != nil {
    return "", err
}

Я уже разделяю firebaseApp (firebase.App) между программами.

Мой вопрос: безопасно ли также разделять auth.Client между программами или мне нужно создавать его каждый раз, когда я проверяю токен ID? Это будет означать, что я буду создавать его почти для каждого аутентифицированного запроса Это кажется дорогостоящим для меня. Я ничего не мог найти в документации.

1 Ответ

0 голосов
/ 03 ноября 2018

Да, это безопасно для goroutine.

auth.Client предназначен для совместного использования с программами и повторного использования. В частности, функция VerifyIDToken() будет кэшировать открытые ключи между вызовами. Вы должны повторно использовать экземпляр клиента, чтобы извлечь из этого пользу. auth.Client выполняет собственную блокировку / синхронизацию внутри, когда это необходимо ( например, ).

...