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

如何使用C#删除AWS Cognito用户池用户?基于aws-cognito-dot-net-desktop-app示例

问题诊断
  • API调用完全错误:你调用的DeleteUserPoolAsync是用于删除整个Cognito用户池的服务端接口,完全不是删除单个用户的接口,同时你将请求参数里的UserPoolId赋值为用户名,参数逻辑完全错误。
  • 凭证权限错误:你使用了AnonymousAWSCredentials匿名凭证调用Cognito管理接口,Cognito不允许匿名身份执行用户删除、用户池删除这类敏感操作,必然会鉴权失败。
修复方案

根据你的使用场景二选一即可:

场景1:当前登录用户主动删除自己的账号

该场景不需要管理员权限,使用用户登录后拿到的访问令牌调用DeleteUserAsync接口即可,示例代码:

internal async Task<bool> DeleteCurrentUser(string accessToken)
{
    try
    {
        var provider = new AmazonCognitoIdentityProviderClient(RegionEndpoint.USEast1);
        var request = new DeleteUserRequest
        {
            AccessToken = accessToken
        };
        await provider.DeleteUserAsync(request);
        return true;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
        return false;
    }
}

场景2:管理员侧删除指定用户

该场景需要使用拥有cognito-idp:AdminDeleteUser权限的IAM凭证,调用AdminDeleteUserAsync接口即可,示例代码:

internal async Task<bool> AdminDeleteUser(string username)
{
    try
    {
        // 注意:生产环境禁止硬编码IAM凭证,建议通过IAM角色、密钥管理服务等方式安全获取凭证
        var credentials = new Amazon.Runtime.BasicAWSCredentials("你的IAM访问密钥ID", "你的IAM秘密访问密钥");
        var provider = new AmazonCognitoIdentityProviderClient(credentials, RegionEndpoint.USEast1);
        var request = new AdminDeleteUserRequest
        {
            // 替换为你自己的Cognito用户池ID,格式通常为 区域_xxxxxx,例us-east-1_abc123
            UserPoolId = "你的用户池ID",
            Username = username
        };
        await provider.AdminDeleteUserAsync(request);
        return true;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
        return false;
    }
}

注意:代码中的RegionEndpoint.USEast1需要替换为你自己的Cognito用户池实际部署的区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:05