我用Vue(包括Vue-Router),Node和Express创建了一个应用程序。 我正在尝试使用auth0-js通过SSO保护我的应用程序。 我创建了Auth0-Account,并遵循了this教程。 我的登录功能如下:
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
我不知道哪里出了问题。这似乎是一个非常愚蠢的问题,但是:有人可以告诉我授权令牌必须在哪里,以便可以找到它?
如果有人帮助我或者给我一个提示,我将非常感激。 如果可以,请随时询问更多代码段。
答案 0 :(得分:0)
好的,我自己找到了答案...但是如果有人犯了与我正在做的相同的错误:我忘了在axios.post请求中设置标头,像这样:
axios({
method: 'post',
url: '/send-sensitive-data',
data: somedata,
headers: {
Authorization: 'Bearer ' + getAccessToken()
}
})
.then(response => {
// do something with the response
})