在React SPA中验证从Keycloak中检索到的Node.js Express API的访问令牌,可以按照以下步骤进行:
keycloak-js
:用于在前端进行Keycloak认证和访问令牌的获取。axios
:用于发送HTTP请求到Node.js Express API。index.js
)中,使用keycloak-js
库初始化Keycloak实例,并进行认证和访问令牌的获取。示例代码如下:import Keycloak from 'keycloak-js';
const keycloak = Keycloak({
url: 'YOUR_KEYCLOAK_REALM_URL',
realm: 'YOUR_KEYCLOAK_REALM',
clientId: 'YOUR_KEYCLOAK_CLIENT_ID',
});
keycloak.init({ onLoad: 'login-required' }).then((authenticated) => {
if (authenticated) {
// 认证成功,获取访问令牌
const token = keycloak.token;
// 将令牌保存到本地,以便后续使用
localStorage.setItem('accessToken', token);
// 启动React应用
ReactDOM.render(<App />, document.getElementById('root'));
}
});
express-jwt
:用于验证JWT令牌。jwks-rsa
:用于获取公钥以验证JWT签名。然后,创建一个中间件来验证访问令牌,并将其应用于需要进行身份验证的路由。示例代码如下:
const jwt = require('express-jwt');
const jwksRsa = require('jwks-rsa');
// 验证访问令牌的中间件
const checkJwt = jwt({
// 从环境变量中获取Keycloak的Realm URL
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: 'YOUR_KEYCLOAK_REALM_URL/.well-known/jwks.json',
}),
// 验证令牌的配置
audience: 'YOUR_KEYCLOAK_CLIENT_ID',
issuer: 'YOUR_KEYCLOAK_REALM_URL',
algorithms: ['RS256'],
});
// 应用于需要进行身份验证的路由
app.get('/api/protected', checkJwt, (req, res) => {
// 在这里处理受保护的API逻辑
});
这样,当React SPA发送请求到Node.js Express API的受保护路由时,中间件将验证访问令牌的有效性。
以上是在React SPA中验证从Keycloak中检索到的Node.js Express API的访问令牌的基本步骤。根据具体需求,你可以进一步优化和扩展这些步骤,例如处理令牌的刷新和过期、错误处理等。关于腾讯云相关产品和产品介绍的链接地址,可以参考腾讯云官方文档或咨询腾讯云的技术支持。
领取专属 10元无门槛券
手把手带您无忧上云