Netsuite - REST API (restlet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败
Posted
技术标签:
【中文标题】Netsuite - REST API (restlet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败【英文标题】:Netsuite - REST API (restlet)- creating record causes INVALID_LOGIN_ATTEMPT failure on the 2nd and more request for records 【发布时间】:2021-12-11 20:26:56 【问题描述】:我在使用基于令牌的身份验证 (TBA) oauth 身份验证的 netsuite rest api 创建后续记录时遇到问题。这是我的完整代码:https://gist.github.com/axilaris/428e63e5ff107d212fbcc07c5bdbce7a(它包含 restlet、python 代码和 python 代码的输出)。
第一个记录被创建(你可以看到成功)但第二个总是得到 INVALID_LOGIN_ATTEMPT。如果我删除创建第二条记录,每次仍然可以成功创建。但是,如果我在创建第二个或更多的过程中,它总是第二个或更多将具有 INVALID_LOGIN_ATTEMPT。
'Authorization': b'OAuth realm="5504997_SB1", oauth_version="1.0", oauth_nonce="87811756", oauth_timestamp="1635417611", oauth_token="d0c58f511e12345678c3e969e09e0ae1d967869762a354523494f0b953e9", oauth_consumer_key="117123345674ffb0b98440badb57205b3542234832cbdbabca0", oauth_body_hash="2jmj7l5rSw0yVb%2FvlWAYeqweq%2FYBwk%3D", oauth_signature_method="HMAC-SHA256", oauth_signature="Apx76mZiSjKtF6WjLweqweqwRNV4KF1VEZAfURe8%3D"', 'Content-Type': 'application/json'
Result: "success":true
'X-N-OperationId': '42656b12-5874-4870-b958-631e8a298ecd', 'NS_RTIMER_COMPOSITE': '331252041:706172746E6572733031312E70726F642E6475622E6E65746C65646765722E636F6D:80', 'Strict-Transport-Security': 'max-age=31536000', 'Content-Type': 'application/json;charset=utf-8', 'Pragma': 'No-Cache', 'Cache-Control': 'No-Cache', 'Expires': '0', 'Content-Length': '17', 'P3P': 'CP="CAO PSAa OUR BUS PUR"', 'Vary': 'User-Agent', 'Date': 'Thu, 28 Oct 2021 10:40:11 GMT', 'Connection': 'keep-alive', 'Set-Cookie': 'NS_ROUTING_VERSION=LAGGING; path=/', 'Akamai-GRN': '0.57561b3a.1635417611.239d029f'
Result: "error" : "code" : "INVALID_LOGIN_ATTEMPT", "message" : "Invalid login attempt."
'WWW-Authenticate': 'OAuth realm="5008903_SB1"', 'Content-Type': 'application/json;charset=utf-8', 'Content-Length': '84', 'P3P': 'CP="CAO PSAa OUR BUS PUR"', 'Vary': 'User-Agent', 'Date': 'Thu, 28 Oct 2021 10:40:12 GMT', 'Connection': 'close', 'Set-Cookie': 'NS_ROUTING_VERSION=LAGGING; path=/', 'Akamai-GRN': '0.57561b3a.1635417611.239d0735'
这是 Audit Trail 日志的屏幕截图
有人可以建议每次创建记录时都需要身份验证 TBA 吗?有没有更好的方法来处理这个问题,首先进行 TBA 身份验证,然后使用该响应(可能是令牌)创建多个记录?请告知,因为我有一个定期创建记录的平台。
【问题讨论】:
听起来您的时间跨度或 Nonce 有问题,请转到“设置->用户和角色->查看审核登录跟踪”并单击“创建保存的搜索”,然后在结果选项卡中添加“详细信息" 字段并运行保存的搜索,你会看到为什么你会得到 INVALID_LOGIN_ATTEMPT 【参考方案1】:根据 SuiteAnswer 74343
对于此示例,用户已使用随机数 + 时间戳的组合。确保为每个请求生成唯一的随机数。
确保不要两次发送相同的请求。 (如果用户需要做同样的操作,用户必须生成一个新的TBA头)。
【讨论】:
感谢它有效!不知何故它是静态的,我们现在对每个请求都进行了动态/唯一。只是一个额外的问题,是否有另一种方法可以让我们执行一次 oauth TBA 并为发布请求使用某种响应令牌?我正在检查我们是否可以每次都减少某种身份验证负载。谢谢 很高兴它有效,您是否尝试过客户端应用程序的 OAuth 库消耗(suiteAnswers 42171 netsuite.custhelp.com/app/answers/detail/a_id/42171),php 的一个是:raw.githubusercontent.com/ChanahC/phpoauth/master/Oauth.php 我正在使用 oauth2 python 库。您是否知道任何有关流程的文档或文章。或者您是否体验过使用 PHP 进行一次身份验证并使用身份验证令牌进行许多事务(如 POST/GET 等)。谢谢以上是关于Netsuite - REST API (restlet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败的主要内容,如果未能解决你的问题,请参考以下文章
邮递员之外的 Netsuite REST Web 服务 API GET 请求
Netsuite - REST API - 如何使用基于令牌的身份验证 (TBA) 创建新条目记录 - (在 Python 中)
Netsuite - REST API (restlet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败