Мне очень жаль, если это много вопросов. Я немного новичок здесь.

ался реализоватьOAuth 2.0 процесс аутентификации в моем приложении.

У нас есть внутренний сервер с REST API, полностью закодированный на Java и с интегрированным Spring.

Приложение зарегистрировано наFirebase (Я могу получить к нему доступ через консоль), и я успешно реализовалGoogle SignIn процесс иEmail/Password (пользователи добавляются в мою базу данных, как показано в консоли Firebase).

Моя проблема здесь, скорее всего, мое плохое понимание процесса OAuth: насколько я понимаю, я должен использоватьFirebaseUser.getIdToken(bool) из приложения, чтобы получитьJWT (JSON Web Token), который я отправляю (черезHTTP Post) на внутренний сервер для запроса пользователя, который потребовал бы аутентификации (что-то типа отправки информации, которую наш сервер должен сохранить в нашей базе данных пользователей в строке, связанной с UID, связанным с пользователем, отправляющим запрос).

я верюэтот документ это тот, которому я должен следовать, чтобы достичь своей цели. Однако эта часть фрагментов кода, представленная в документе, оставляет меня в замешательстве:

FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
        public void onComplete(@NonNull Task<GetTokenResult> task) {
            if (task.isSuccessful()) {
                String idToken = task.getResult().getToken();
                // Send token to your backend via HTTPS
                // ...
            } else {
                // Handle error -> task.getException();
            }
        }
    });
idToken Я получаю это 1232 символа в длину. Я обязан отправить всю строку? Структура выглядит так:{alg,kid}.{iss,name,picture,aud,auth_time,user_id,sub,iat,exp,email,email_verified,firebase{...}}.XXX, Есть довольно много полей, которые я бы обрезал, так как я не буду использовать их на стороне сервера.Кажется, сейчас я не могу получить право на «XXX» часть моего idToken. Я знаю, что это связано с цифровой подписью и что мне, вероятно, нужен открытый ключ и закрытый ключ (пока я не совсем уверен, где взять хорошие). Как мне справиться с этим?Что может// Send token to your backend via HTTPS выглядеть (простой URL-адрес, содержащий строку, или есть правильный способ отправить JWT)?Является ли JWT всем, что сервер должен получить от клиента для процесса аутентификации?Могу ли я отправить дополнительную информацию с помощью JWT (например, что должна делать аутентификация после проверки)? Если нет, то должен ли я предположить, что это сделано после того, как сервер ответит клиенту, что теперь он ожидает запрос от аутентифицированного пользователя?Я видел, как люди звонили по некоторому URL, чтобы проверить свой токен, но я не уверен, какой URL мне следует использовать, какой токен я должен передать в нем, и что я должен ожидать в результате. Может бытьhttps://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg или жеhttps://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123?Какова рольAdmin SDK во всем этом?

Я думал, что все кончено, и это все, что мне нужно, пока я не наткнулся наэтот другой документ что приносит другие вопросы:

Есть лиimplementation 'com.google.firebase:firebase-admin:6.3.0' нужно только быть в коде на стороне сервера? Видимо да!Где мне подключить мойfirebase-adminsdk.json файл во всем этом?В Firebase Admin SDK установите код, предоставленный Google.FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json"); а такжеFileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json");: какой файл JSON мне подключить?Тот, который упоминается чуть выше!Мой сервер должен иметьgoogle_services.json интегрированы?Похоже, это в основном говорит об использовании FirebaseDatabase, Можно ли использовать мою собственную БД (это MySQL, размещенный на GoDaddy)?Да!

Мне очень жаль, если это много вопросов. Я немного новичок здесь.

Ответы на вопрос(0)

Ваш ответ на вопрос