当前位置: 首页 > 知识库问答 >
问题:

C#AWS SDK安全令牌服务客户端。假设角色返回“SignatureDesNotMatch”403禁止

亢建白
2023-03-14

我一直在开发环境中实现AWS S3与C#AWS SDK的集成,一切都进展顺利。部分要求是IAM AccessKey和秘书密钥旋转,凭据/配置文件存储或缓存,并且在这个过程中还需要承担一个角色。

我有一个方法,在使用AccessKey、SecretKey和RegionEndpoint初始化AmazonSecurityTokenServiceClient后返回凭据,使用RoleArn格式化AssumeRequest,然后执行请求:

using (var STSClient = new AmazonSecurityTokenServiceClient(accessKey, secretKey, bucketRegion))
{
    try
    {
        var response = STSClient.AssumeRole(new AssumeRoleRequest(roleARN));

        if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) return response.Credentials;
    }
    catch (AmazonSecurityTokenServiceException ex)
    {
        return null;
    }
}

这被简化了,因为真正的实现验证了凭据变量等。它与AWS Developer代码示例相匹配(尽管我再也找不到该页面的链接)。

这在开发中一直工作得很好。将其移动到具有新的AWS凭据的QA环境中,我已经得到保证,该凭据已经在与开发凭据相同的过程中设置,我现在在AssumeRole调用中收到一个异常。

实际的AssumeRole方法不包括它将引发该异常的文档,它只是它引发的一个异常。状态代码:403禁止,错误代码:SignatureDesNotMatch,错误类型:Sender,消息“我们计算的请求签名与您提供的签名不匹配…”。

我已经排除的事情:

>

桶区域是正确的美国-西-2

sts认证区域为us-east-1

SignatureVersion是4

切换回dev键可以工作,但这不是一个生产友好的解决方案。最终,我不会负责密钥或Aws帐户来创建它们。我一直与创建帐户/密钥/角色的信息技术管理员保持联系,他向我保证,它们的创建方式与我创建开发帐户/密钥/角色的方式相同(这是开发前商定的过程)。

提供的帐户/密钥/角色可以通过CLI或网络控制台访问,因此我可以确认它们工作并处于活动状态。我一直努力不让任何CLI创建的凭据或配置文件浮动,sdk可能在默认情况下访问这些文件。

欢迎提出任何想法或建议。

共有1个答案

蔺霄
2023-03-14

AWS返回此错误的原因通常是密钥不正确

我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。(状态代码: 403;错误代码: SignatureDoesNotMatch)

 类似资料:
  • 我与Laravel有一个项目,负责管理endpoint调用,并通过Vue控制前端。 当用户登录时,响应(令牌)保存在本地存储中,然后在app.js我将此令牌自动添加到所有调用中。 登录 应用程序。js 现在,我们将看到问题。 当我们转到第二页时,将自动启动endpoint调用以填充一些输入。此调用理论上具有本地存储令牌。 路由(APIendpoint) 头部控制器 这将返回拒绝访问。令牌在标头中被

  • 我正在尝试使用Spring security保护我的网站,但我一直收到

  • 问题内容: 我正在尝试制作Sitecraper。我是在本地计算机上制作的,在那儿工作得很好。当我在服务器上执行相同操作时,它显示403禁止错误。我正在使用PHP简单HTML DOM解析器 。我在服务器上收到的错误是这样的: 警告:file_get_contents(http://example.com/viewProperty.html?id=7715888)[function.file- get

  • 我已经编写了我的OAuth2服务器,我可以成功地从我的服务器检索访问令牌,但是当它到客户端时,它总是返回“无效令牌错误”。 我已经搜索并阅读了许多文章、页面和链接,例如以下链接:Spring Security OAuth2 Resource Server Always Returning Invalid Token 但我不能解决这个问题,这是我的代码,我会很感激你能帮助我。 身份验证服务器中的配置

  • deployment.yaml: 当从nginx-ingress pod获取日志时,我们注意到状态代码是,这意味着它正在工作。 产出: 但是,客户端返回: https://github.com/kubernetes/ingress-nginx/issues/3746 任何帮助都将不胜感激。

  • 我已经使用java nio创建了一个客户端-服务器应用程序,它工作正常,但我的问题是,当服务器有许多连接到服务器的客户端时,服务器会响应错误的客户端,而不是请求客户端。例如,如果客户端A请求第一个人的信息,服务器将第一个人的信息返回给客户端B而不是客户端A。我已经尝试同步对象,但仍然无法正常工作,可能是什么问题。这是我的服务器示例代码