Как реализовать пользовательскую аутентификацию с помощью hasura? - PullRequest
0 голосов
/ 04 апреля 2020

Я работаю над приложением доставки еды. Таким образом, будет два типа пользователей: 1. клиент. 2. продавец. Я могу установить пользовательское разрешение для таблиц для двух пользователей в консоли hasura. Теперь, как реализовать настройку аутентификации, где пользователь может зарегистрироваться / войти на два сайта с этими двумя разными ролями. В auth0 или firebase у нас не может быть этой функции. Так что настраиваемый сервер аутентификации - единственный вариант. Итак, мой вопрос здесь - как запустить скрипт jwt, который мы запускаем в auth0, чтобы передать эти переменные сезона .?

function (user, context, callback) {
const namespace = "https://hasura.io/jwt/claims";
context.idToken[namespace] = 
{ 
  'x-hasura-default-role': 'user',
  // do some custom logic to decide allowed roles
  'x-hasura-allowed-roles': ['user'],
  'x-hasura-user-id': user.user_id
};
callback(null, user, context);
}

И нужно ли мне написать эту службу аутентификации как пользовательский распознаватель и добавить его как удаленный схема? Как запустить операцию базы данных в распознавателе?

1 Ответ

0 голосов
/ 04 апреля 2020

можно ли внедрить этот сервер аутентификации в качестве удаленной схемы или мне нужно запустить отдельный сервер узлов?

Да, вы можете внедрить сервер аутентификации в качестве удаленной схемы! Вам просто нужно убедиться, что к вашей удаленной схеме можно получить доступ через «анонимную» роль, минуя режим JWT, который применяется к остальной части аутентифицированной конечной точки gql.

Иногда может потребоваться обойти авторизацию Hasura система (вызов настроенного webhook или проверка JWT) для запросов к удаленному серверу GraphQL. Например, у вас есть удаленный сервер GraphQL, который выполняет аутентификацию, то есть регистрацию и вход в систему, и вы добавили его в качестве удаленной схемы. В этом случае вы не захотите выполнять авторизацию Hasura, когда пользователь делает запрос на вход в систему / регистрацию.

Соответствующая документация: https://hasura.io/docs/1.0/graphql/manual/remote-schemas/index.html#bypassing -hasura-s-authorization-system- for-remote-schema-query

И: https://hasura.io/docs/1.0/graphql/manual/auth/authentication/unauthenticated-access.html.


При реализации собственного сервера аутентификации есть две опции или " режимы "(Webhooks или JWT), как описано здесь: https://hasura.io/docs/1.0/graphql/manual/auth/authentication/index.html. Диаграммы очень полезны!

После настройки одного из параметров Hasura автоматически аутентифицирует ваши запросы (до того, как какой-либо запрос или мутация когда-либо будут выполнены). Вам не нужно писать собственный преобразователь и добавлять его в качестве удаленной схемы.

Hasura может быть настроен с переменными среды (HASURA_GRAPHQL_AUTH_HOOK, HASURA_GRAPHQL_AUTH_HOOK_MODE или HASURA_GRAPHQL_JWT_SECRET) или флагами при запуске GraphQL механизм (--auth-hook или --jwt-secret), и в зависимости от того, что вы выбираете, вы должны соответствовать спецификации c, указанной в документации (как должен отреагировать сервер аутентификации, или настроить токен).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...