У меня возникли проблемы с настройкой аутентификации Hasura с использованием лямбды. Мне нужна такая функция, поскольку я сохраняю свой токен JWT в поваре только для HTTP ie, из соображений безопасности.
Я использую функцию без сервера, которая возвращает правильный ответ (либо при тестировании завитка) запросить напрямую или даже при регистрации лямбды):
{
"statusCode":200,
"body":"{\"X-Hasura-User-Id\":\"74d3bfa9-0983-4f09-be02-6a36888b382e\",\"X-Hasura-Role\":\"user\"}"
}
Тем не менее, хасура Хасуры, похоже, не распознает ответ:
{
"type": "webhook-log",
"timestamp": "2020-02-07T10:27:34.844+0000",
"level": "info",
"detail": {
"response": null,
"url": "http://serverless:3000/auth",
"method": "GET",
"http_error": null,
"status_code": 200
}
}
Эти две строки журналов соседствуют в моем журналы. Я просто переформатировал их немного, чтобы облегчить чтение.
Мой лямбда-код выглядит так:
export const handler = async (event) => {
const cookies = getCookiesFromHeader(event.headers);
const { access_token: accessToken } = cookies;
let decodedToken = null;
try {
const cert = fs.readFileSync("./src/pem/dev.pem");
decodedToken = jwt.verify(accessToken, cert);
} catch (err) {
console.error(err);
return {
statusCode: 401,
};
}
const hasuraClaims = decodedToken['https://hasura.io/jwt/claims'];
return {
statusCode: 200,
body: JSON.stringify({
"X-Hasura-User-Id": hasuraClaims['x-hasura-user-id'],
"X-Hasura-Role": hasuraClaims['x-hasura-default-role']
})
}
}
Есть идеи о том, что происходит? Обратите внимание, что я использую автономный сервер, в случае. :)