You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为AWS Lambda Function URL配置令牌式身份认证?

解决方案:Lambda Function URL 实现 Bearer 令牌认证

方法1:自定义授权器(规范推荐方案)

Lambda Function URL支持自定义授权器,这是替代硬编码认证逻辑的标准做法,能将认证与业务逻辑解耦:

  • 核心流程:

    1. 创建独立的Lambda授权器函数,专门负责验证请求头中的Authorization: Bearer <token>令牌
    2. 在Function URL配置中关联该授权器
    3. 请求到达时,AWS会先调用授权器验证令牌:
      • 验证通过:请求转发至业务Lambda
      • 验证失败:直接返回401/403错误,不会触发业务Lambda执行
  • 授权器函数示例(Python):

import json

def lambda_handler(event, context):
    # 提取并校验Authorization头格式
    auth_header = event.get('headers', {}).get('Authorization')
    if not auth_header or not auth_header.startswith('Bearer '):
        return {'isAuthorized': False, 'context': {}}
    
    token = auth_header.split(' ')[1]
    
    # 替换为你的令牌验证逻辑(比如对比预存有效令牌、调用OAuth服务校验等)
    valid_tokens = ['your-valid-token-001', 'your-valid-token-002']
    if token not in valid_tokens:
        return {'isAuthorized': False, 'context': {}}
    
    # 验证通过后,可返回上下文信息供业务函数使用
    return {
        'isAuthorized': True,
        'context': {'user_id': 'user_123', 'token_scope': 'full_access'}
    }
  • 配置步骤:
    1. 进入业务Lambda的「配置」→「Function URL」页面
    2. 编辑配置,将「Auth type」从默认的AWS_IAM切换为「Custom」
    3. 选择已创建的授权器函数,设置超时时间(建议10秒内)和缓存TTL(减少重复验证开销)

方法2:Amazon Cognito集成(适合用户身份场景)

如果你的Bearer令牌是Cognito用户池/身份池签发的JWT令牌,可直接将Function URL的认证方式配置为Amazon Cognito:

  • 配置时选择「Auth type」为「Amazon Cognito」,关联你的目标用户池
  • 请求携带Cognito签发的ID Token或Access Token,AWS会自动完成令牌有效性校验,无需编写自定义授权器

不推荐硬编码认证逻辑的原因

  • 业务代码与认证逻辑耦合,后续维护、扩展成本高
  • 认证失败时仍会触发业务Lambda,浪费计算资源
  • 无法利用AWS内置的认证缓存、权限管控等优化能力

内容的提问来源于stack exchange,提问作者Erik Fubel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:22:16