AWS ALB提供了使用Cognito JWT/OIDC身份认证的功能,可以通过以下步骤实现:
创建Cognito用户池,并添加用户。
配置Cognito身份池,并将用户池与身份池相关联。
在AWS Console中创建一个负载均衡器(ALB),并选择需要使用认证的目标组。
在“Listners”选项卡中,选择需要使用身份认证的端口,如443。
在“Actions”下拉菜单中,选择“Authenticate Cognito”选项,并在弹出窗口中设置以下参数:
Cognito User Pool:选择步骤1中创建的用户池。
Authorization Scope:输入需要授权的作用域。
Token Issuer:输入身份池的值。
Token Validity:设置令牌有效期。
在“Forward”下拉菜单中选择需要转发的端口,并保存设置。
下面是使用Node.js和Express框架对ALB身份认证进行身份验证的示例代码:
const express = require('express'); const jwt = require('jsonwebtoken');
const app = express();
app.use(function(req, res, next) { // 获取请求Header中的JWT令牌 const token = req.get('Authorization').split(' ')[1];
// 使用JWT库验证令牌 jwt.verify(token, 'CognitoIsssuerValue', function(err, decoded) { if (err) { // 如果令牌未通过验证,则返回错误401 res.status(401).send({ error: 'Authorization required.' }); } else { // 如果令牌验证通过,则让用户通过 req.user = decoded; next(); } }); });
// 在这里放置需要需要身份验证的API路由
app.listen(3000, () => console.log('Server running on port 3000'));