有什么方法可以将 Auth0 集成到 Loopback 4 中吗?
Is there any way to integrate Auth0 to Loopback 4?
我在一个使用环回版本 4 的项目中工作,这是一个 Node.js 框架。我需要使用 Auth0 实现身份验证。但是,Auth0 似乎与 Loopback 版本 4 不兼容。我找不到关于这个主题的任何文档,甚至教程。
有人曾经在 Loopback 4 中使用 Auth0 实现身份验证吗?
来自 LoopBack 团队的问候
身份验证和授权是我们目前正在积极开发的功能(截至 2019 年 6 月)。据我从 Auth0 文档中得知(参见 Server Client + API: Node.js Implementation for the API),他们正在使用 JWT 令牌。
幸运的是,我们已经有一个演示 JWT-based 身份验证的示例应用程序 - 请参阅 https://github.com/strongloop/loopback4-example-shopping
看看JWTServiceclass,就是client-provided令牌解析和验证的地方。
Auth0 提供的 Express 示例使用 express-jwt package that wraps jsonwebtoken 到 Express 中间件中。
在LoopBack中,我们直接调用jsonwebtoken
。
要采用 Auth0 提供的基于 Express 的示例,应该足以弄清楚如何将 express-jwt 配置的相关位传递给 jsonwebtoken 库。
这是从 Auth0 文档复制的配置:
// Create middleware for checking the JWT
const checkJwt = jwt({
// Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint.
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://YOUR_DOMAIN/.well-known/jwks.json`
}),
// Validate the audience and the issuer.
audience: process.env.AUTH0_AUDIENCE,
issuer: `https://YOUR_DOMAIN/`,
algorithms: ['RS256']
});
以下是 LoopBack 的 JWTService
调用 jsonwebtoken 库的方式:
const decryptedToken = await verifyAsync(token, this.jwtSecret);
注意服务中注入了jwtSecret
,我们这里配置:
this.bind(TokenServiceBindings.TOKEN_SECRET).to(
TokenServiceConstants.TOKEN_SECRET_VALUE,
);
我认为您需要将 TokenServiceConstants.TOKEN_SECRET_VALUE
替换为 jwksRsa
返回的值。
this.bind(TokenServiceBindings.TOKEN_SECRET).to(
jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://YOUR_DOMAIN/.well-known/jwks.json`
}),
})
需要解决的问题:
如何应用 audience
、issuer
和 algorithms
选项。
我不确定 jsonwebtoken
是否支持开箱即用的动态机密。如果上述建议不起作用,那么您可能需要查看 express-jwt
来源以了解他们如何处理动态机密。
我希望我的回答能提供足够的指导,让您自己找出缺失的细节。如果您能 post 完整的工作解决方案,如果您设法解决了,那就太好了。
LoopBack 团队的一名成员最近实施了一个概念验证应用程序,展示了如何与 Auth0 集成。您可以在此处找到存储库:
我在一个使用环回版本 4 的项目中工作,这是一个 Node.js 框架。我需要使用 Auth0 实现身份验证。但是,Auth0 似乎与 Loopback 版本 4 不兼容。我找不到关于这个主题的任何文档,甚至教程。 有人曾经在 Loopback 4 中使用 Auth0 实现身份验证吗?
来自 LoopBack 团队的问候
身份验证和授权是我们目前正在积极开发的功能(截至 2019 年 6 月)。据我从 Auth0 文档中得知(参见 Server Client + API: Node.js Implementation for the API),他们正在使用 JWT 令牌。
幸运的是,我们已经有一个演示 JWT-based 身份验证的示例应用程序 - 请参阅 https://github.com/strongloop/loopback4-example-shopping
看看JWTServiceclass,就是client-provided令牌解析和验证的地方。
Auth0 提供的 Express 示例使用 express-jwt package that wraps jsonwebtoken 到 Express 中间件中。
在LoopBack中,我们直接调用jsonwebtoken
。
要采用 Auth0 提供的基于 Express 的示例,应该足以弄清楚如何将 express-jwt 配置的相关位传递给 jsonwebtoken 库。
这是从 Auth0 文档复制的配置:
// Create middleware for checking the JWT
const checkJwt = jwt({
// Dynamically provide a signing key based on the kid in the header and the singing keys provided by the JWKS endpoint.
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://YOUR_DOMAIN/.well-known/jwks.json`
}),
// Validate the audience and the issuer.
audience: process.env.AUTH0_AUDIENCE,
issuer: `https://YOUR_DOMAIN/`,
algorithms: ['RS256']
});
以下是 LoopBack 的 JWTService
调用 jsonwebtoken 库的方式:
const decryptedToken = await verifyAsync(token, this.jwtSecret);
注意服务中注入了jwtSecret
,我们这里配置:
this.bind(TokenServiceBindings.TOKEN_SECRET).to(
TokenServiceConstants.TOKEN_SECRET_VALUE,
);
我认为您需要将 TokenServiceConstants.TOKEN_SECRET_VALUE
替换为 jwksRsa
返回的值。
this.bind(TokenServiceBindings.TOKEN_SECRET).to(
jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://YOUR_DOMAIN/.well-known/jwks.json`
}),
})
需要解决的问题:
如何应用
audience
、issuer
和algorithms
选项。我不确定
jsonwebtoken
是否支持开箱即用的动态机密。如果上述建议不起作用,那么您可能需要查看express-jwt
来源以了解他们如何处理动态机密。
我希望我的回答能提供足够的指导,让您自己找出缺失的细节。如果您能 post 完整的工作解决方案,如果您设法解决了,那就太好了。
LoopBack 团队的一名成员最近实施了一个概念验证应用程序,展示了如何与 Auth0 集成。您可以在此处找到存储库: