Я создал приложение с Vue (включая Vue-Router), Node и Express.
Я пытаюсь защитить свое приложение с помощью единого входа, используя auth0-js.
Я создал Auth0-аккаунт и следовал этому учебнику.
Функция «Мой логин» выглядит следующим образом:
import auth0 from 'auth0-js'
var auth = new auth0.WebAuth({
clientID: <my-client-id>,
domain: '<my-auth0-domain>/'
})
export function ssoLogin () {
auth.authorize({
responseType: 'token id_token'
redirectUri: http://localhost:8000/callback,
audience: 'https://<my-auth0-domain>/userinfo',
scope: 'full_access'
})
}
Хотя сам логин работает нормально, я не могу понять, как защитить секретные маршруты моего приложения.
Следуя вышеупомянутому руководству, я использовал express-jwt и jwks-rsa, например:
var jwt = require('express-jwt')
var jwks = require('jwks-rsa')
var authCheck = jwt({
secret: jwks.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: "https://<my-auth0-domain>/.well-known/jwks.json"
}),
audience: <my-client-id>,
issuer: "https://<my-auth0-domain>/",
algorithms: ['RS256']
})
app.post('/send-sensitive-data', authCheck, function (req, res) {
// this post requests sends some data, and should only do so, if a user is logged in
})
Однако, даже если я вошел в систему через SSO, при попытке доступа к конфиденциальным данным я получаю
UnauthorizedError: No authorization token was found
Понятия не имею, где я ошибся. Это кажется очень глупым вопросом, но: может кто-нибудь сказать мне, где должен находиться токен авторизации, чтобы он был найден?
Я был бы очень признателен, если бы кто-то помог мне этим или дал мне подсказку.
Пожалуйста, не стесняйтесь просить больше фрагментов кода, если это может помочь.