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

如何在本地ASP .NET开发环境中使用AWS IAM Role对接Cognito

本地开发ASP.NET对接AWS Cognito的IAM角色使用方案

生产环境逻辑回顾

生产环境给EC2实例附加IAM角色是正确做法——该角色需包含访问Cognito用户池的权限策略,EC2实例会自动通过实例元数据服务获取凭证,无需在代码中硬编码密钥。

本地开发的IAM权限配置方案

本地开发无法直接使用EC2实例角色,推荐两种替代方式:

1. 基于IAM用户的持久凭证

  • 创建一个IAM用户,给它分配与生产EC2角色完全一致的Cognito权限策略(示例见下方)
  • 在本地机器的~/.aws/credentials(Linux/macOS)或C:\Users\<你的用户名>\.aws\credentials(Windows)文件中添加以下内容:
    [default]
    aws_access_key_id = 你的IAM用户Access Key
    aws_secret_access_key = 你的IAM用户Secret Key
    
  • ASP.NET的AWS SDK会自动读取该凭证文件,代码无需额外修改,和生产环境调用逻辑保持一致

2. 基于STS临时凭证(临时测试用)

  • 使用AWS CLI执行角色假设命令,获取生产环境EC2角色的临时凭证:
    aws sts assume-role --role-arn arn:aws:iam::你的账号ID:role/生产环境EC2角色名 --role-session-name local-dev-session
    
  • 将返回结果中的AccessKeyId、SecretAccessKey、SessionToken导出为环境变量:
    export AWS_ACCESS_KEY_ID=xxx
    export AWS_SECRET_ACCESS_KEY=xxx
    export AWS_SESSION_TOKEN=xxx
    
  • 启动ASP.NET项目,SDK会自动读取这些环境变量完成认证

示例Cognito权限策略

以下是基础的Cognito认证所需权限策略,可根据实际业务调整:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cognito-idp:AdminInitiateAuth",
        "cognito-idp:AdminRespondToAuthChallenge",
        "cognito-idp:GetUser",
        "cognito-idp:ListUsers"
      ],
      "Resource": "arn:aws:cognito-idp:你的AWS区域:你的账号ID:userpool/你的Cognito用户池ID"
    }
  ]
}

ASP.NET代码注意事项

无需在代码中手动指定凭证,直接使用AWS SDK的默认凭证提供器即可:

// 直接实例化客户端(自动读取凭证)
var cognitoClient = new AmazonCognitoIdentityProviderClient();

// 或者通过依赖注入注册推荐
services.AddAWSService<IAmazonCognitoIdentityProvider>();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:42