В firebase, как добавить пользовательские утверждения к корневому узлу вместо «утверждений»? - PullRequest
0 голосов
/ 08 ноября 2019

В моей облачной функции мне нужно создать пользовательский токен и вставить несколько пользовательских утверждений. Я делаю так:

     let additionalClaims = {
     'https://hasura.io/jwt/claims': {
       'x-hasura-default-role': 'admin',
       'x-hasura-allowed-roles': ['user', 'admin'],
       }
     }

      admin.auth().createCustomToken(userId,additionalClaims).then(function (customToken) {
       console.log(customToken);
        response.end(JSON.stringify({
          token: customToken
        }))
      })
      .catch(function (error) {
        console.log('Error creating custom token:', error);
      });

Заявки добавляются, но они помещаются в узел "заявок", который выглядит следующим образом:

     {
      "aud": 
      "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
      "iat": 1573160781,
      "exp": 1573164381,
      "iss": "postgrest-b4c8c@appspot.gserviceaccount.com",
      "sub": "postgrest-b4c8c@appspot.gserviceaccount.com",
      "uid": "mikeuserid",
      "claims": {
           'https://hasura.io/jwt/claims': {
           'x-hasura-default-role': 'admin',
           'x-hasura-allowed-roles': ['user', 'admin'],
          }
         }
       }
      }

Однако API Iя звоню, ожидает их в корне, как это:

                {
      "aud": 
      "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
      "iat": 1573160781,
      "exp": 1573164381,
      "iss": "postgrest-b4c8c@appspot.gserviceaccount.com",
      "sub": "postgrest-b4c8c@appspot.gserviceaccount.com",
      "uid": "mikeuserid",
      "https://hasura.io/jwt/claims": {
      "x-hasura-default-role": "admin",
      "x-hasura-allowed-roles": ["user", "admin"],
          }
       }
      }

Как я могу добавить претензии, чтобы они добавлялись в корень, а не в «претензии» ??

К вашему сведению,если у меня есть существующий пользователь, и я использую этот синтаксис admin.auth (). setCustomUserClaims (customToken, AdditionalClaims),

Правильно добавляет их root.

1 Ответ

0 голосов
/ 08 ноября 2019

Вы не можете добавлять заявки на верхний уровень (корень) пользовательского токена Firebase. Вы также не должны передавать пользовательские токены другим API. Их следует использовать только для инициирования входа с клиентского устройства. Операция входа в систему заменяет пользовательский токен на токен идентификатора с пользовательскими утверждениями в корне JWT.

Когда вы добавляете утверждения с использованием setCustomUserClaims(), пользовательские токены не включаются (обычно). Пользователь получает ID-токен от Firebase Auth, с пользовательскими утверждениями, уже установленными в корне.

...