auth0-js: UnauthorizedError: токен авторизации не найден, хотя вошел в систему - PullRequest
0 голосов
/ 30 октября 2018

Я создал приложение с 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

Понятия не имею, где я ошибся. Это кажется очень глупым вопросом, но: может кто-нибудь сказать мне, где должен находиться токен авторизации, чтобы он был найден?

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

1 Ответ

0 голосов
/ 30 октября 2018

Хорошо, я нашел ответ самостоятельно ... но в случае, если кто-то делает ту же ошибку, что и я: я забыл установить заголовок в запросе axios.post, например:

axios({
  method: 'post',
  url: '/send-sensitive-data',
  data: somedata,
  headers: {
    Authorization: 'Bearer ' + getAccessToken()
  }
})
.then(response => {
  // do something with the response
})
...