atrust软件令牌始终不对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atrust软件令牌始终不对相关的知识,希望对你有一定的参考价值。

参考技术A atrust软件令牌始终不对吗?答:atrust软件令牌始终不对。 参考技术B 解决办法一:软件问题首先在手机上找到steam软件设置,请求协助页面,并确认使用该设备网络运行正常,再次单击确定,点击发送短信,即可在手机页面收取到验证码,即可完成验证,解决处理请求时的错误。

解决办法二:语言问题在steam中,去更改语言,将语言改成繁体中文后,重新启动steam,再次验证steam手机令牌,然后验证之后,填写信息,设置完成,最后将语言调整回至简体中文即可。

如何解决调用 Amazon SP-API 的问题,该 API 始终返回未经授权,即使使用有效的令牌和签名也是如此

【中文标题】如何解决调用 Amazon SP-API 的问题,该 API 始终返回未经授权,即使使用有效的令牌和签名也是如此【英文标题】:How to fix issue calling Amazon SP-API, which always returns Unauthorized, even with valid Token and Signature 【发布时间】:2021-02-04 15:55:30 【问题描述】:

我浏览了设置指南以调用新的 SP-API (https://github.com/amzn/selling-partner-api-docs/blob/main/guides/developer-guide/SellingPartnerApiDeveloperGuide.md),并在此过程中检查了所有 api 区域以授予访问权限(即订单、库存等)。我正在使用 Amazon (https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp) 提供的 C# 库。我成功获得了访问令牌并成功签署了请求,但总是收到以下错误:访问请求的资源被拒绝。 / 未经授权,没有详细信息。 我正在尝试执行对 /orders/v0/orders 端点的简单获取。任何想法我做错了什么?任何帮助将不胜感激!

下面是我的代码:

private const string MARKETPLACE_ID = "ATVPDKIKX0DER";

var resource = $"/orders/v0/orders";

var client = new RestClient("https://sellingpartnerapi-na.amazon.com");

IRestRequest restRequest = new RestRequest(resource, Method.GET);

restRequest.AddParameter("MarketPlaceIds", MARKETPLACE_ID, ParameterType.QueryString);

restRequest.AddParameter("CreatedAfter", DateTime.UtcNow.AddDays(-5), ParameterType.QueryString);



var lwaAuthorizationCredentials = new LWAAuthorizationCredentials



    ClientId = AMAZON_LWA_CLIENT_ID,

    ClientSecret = AMAZON_LWA_CLIENT_SECRET,

    RefreshToken = AMAZON_LWA_REFRESH_TOKEN,

    Endpoint = new Uri("https://api.amazon.com/auth/o2/token")

;



restRequest = new LWAAuthorizationSigner(lwaAuthorizationCredentials).Sign(restRequest);



var awsAuthenticationCredentials = new AWSAuthenticationCredentials



    AccessKeyId = AMAZON_ACCESS_KEY_ID,

    SecretKey = AMAZON_ACCESS_SECRET,

    Region = "us-east-1"

;



restRequest = new AWSSigV4Signer(awsAuthenticationCredentials).Sign(restRequest, client.BaseUrl.Host);

var response = client.Execute(restRequest);

【问题讨论】:

我遇到了同样的问题。您在这方面取得了进展吗? 不幸的是,没有。但是,我向他们的支持提交了一张票,据说它已升级给应该联系的首席工程师。如果我对此有任何解决方案,我一定会在此处发布详细信息。如果您也取得任何进展,请告诉我=) 有人更新了吗?我可以获取刷新令牌、检查签名、检查凭证,但仍然得到可怕的“我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法”。 嗨@david,你知道了吗?我也面临同样的问题,我的应用处于草稿模式。 嗨。我现在正在处理这个问题,我猜你错过了“授权”标题。我必须告诉亚马逊 SP-API 文档真的很烂,因为提供的签名者库实际上没有签署任何东西:它只是执行 LWA 授权以获取 AccessToken。明天我会写 Sign 流程代码——我猜——我会告诉你的。 【参考方案1】:

如果您遵循 SP-API 指南,则您创建了一个角色(即您的应用注册的 IAM ARN)和一个有权代入该角色以进行 API 调用的用户。

但是,指南不清楚的一件事是您不能直接使用该用户的凭据进行 API 调用。您必须首先使用您的用户凭据 (AMAZON_ACCESS_KEY_ID/AMAZON_ACCESS_SECRET) 调用 STS API 的 AssumeRole method,它将返回针对角色授权的临时凭据。您在签署请求时使用那些临时凭证。

AssumeRole 还将返回一个会话令牌,您必须将其与 API 调用一起包含在名为 X-Amz-Security-Token 的标头中。有关X-Amz-Security-Token 的简要说明,请参阅https://docs.aws.amazon.com/STS/latest/APIReference/CommonParameters.html

【讨论】:

【参考方案2】:

如果您的 sp 应用正在审核中,您也会收到此错误,让我抓狂!

【讨论】:

处于草稿状态是否适用? 是的,确实如此!这让人很困惑!【参考方案3】:

如果你使用 c# 看看

https://github.com/abuzuhri/Amazon-SP-API-CSharp

  AmazonConnection amazonConnection = new AmazonConnection(new AmazonCredential()

     AccessKey = "AKIAXXXXXXXXXXXXXXX",
     SecretKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
     RoleArn = "arn:aws:iam::XXXXXXXXXXXXX:role/XXXXXXXXXXXX",
     ClientId = "amzn1.application-XXX-client.XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
     ClientSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      RefreshToken= "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 );

var orders= amazonConnection.Orders.ListOrders();

【讨论】:

您似乎添加了指向您自己的项目或您所属项目的链接。如果是这种情况,you must disclose your affiliation in the answer itself.。如果不披露此信息,您的帖子可能会被视为垃圾邮件。【参考方案4】:

在我们的情况下,我们必须向我们定义为进行 API 调用的用户显式添加 IAM 策略。请查看下面的链接并确认您调用 API 的用户已分配给他们的策略:

https://github.com/amzn/selling-partner-api-docs/blob/main/guides/developer-guide/SellingPartnerApiDeveloperGuide.md#step-3-create-an-iam-policy

不知何故,我们进行了两次分步设置,但错过了添加此显式策略。最初我相信它是按照指示添加“内联”的,但这似乎不起作用。

【讨论】:

【参考方案5】:

我不认为是重复的问题,购买解决方案可能适用:https://***.com/a/66860192/1034622

【讨论】:

以上是关于atrust软件令牌始终不对的主要内容,如果未能解决你的问题,请参考以下文章

电脑安装软件路径不对怎么处理?

电脑安装软件路径不对怎么处理?

OpenAL 和 Vista:设备始终是“通用软件”

Sccm 部署Msi 客户端能收到软件,但是不会自动安装。始终显示,过期将被安装。手动可以安装。

验证时 JWT 令牌始终无效

软件令牌是多因素安全性中有效的第二个因素吗?