目標は、JavaアプリケーションのNLAuth-headerではなくOAuth-headerを使用してRESTletを呼び出すことです。OAuth経由でNetSuite RESTletに到達
私はNetSuiteの開発者コミュニティのアカウントを作成し、管理者権限(ドメインsystem.na1.netsuite.com)でテスト環境を得た。それを達成するために、私は、次の手順を実行しました。
セットアップ - >会社 - >機能を有効にしました。その後、 "SuiteCloud"タブを開き、ここで "Client SuiteScript"、 "Server SuiteScript"、 "Token-Based Authentication"をチェックしました。
私は役割の編集ページを開きました(ここでは「08:検査」と呼ばれています)。 「アクセス許可トークン管理」、「アクセストークンを使用してログインする」、および「ユーザーアクセストークン」の各アクセス権をこの役割に追加しました。
ユーザーの編集中に「アクセス」タブを開き、「ロール」タブを開いてそのロール(「08:検査」)を追加しました。
セットアップ - >統合 - >統合管理 - >新規を開き、ここに新しいアプリケーション(「TestIntegr」)を作成しました。最後のページには、Consumer KeyとConsumer Secretという2つの文字列があります。私はそれらを別のファイルに保存しました。
セットアップ - >ユーザー/ロール - >アクセストークン - >新規を開き、自分のアプリケーション+ユーザー+役割の新しいトークンを作成しました。最後のページには、トークンIDとトークンシークレットという2つの文字列があります。私はそれらを別のファイルに保存しました。
テストプログラムを使用して認証ヘッダー文字列を生成し、この文字列をrest-client(私は "Insomnia"を使用)で使用してダミーレセレットに到達しました。 「INVALID_LOGIN_ATTEMPT」 - エラーが発生しました。
NetSuiteの監査ログでは、ユーザーの代わりに役割がなくてもエラーが表示されます。
以下の例を含む7番目のステップに関するさらに詳しい情報
GET&https%3A%2F%2Frest.na1.netsuite.com%2Fapp%2Fsite%2Fhosting%2Frestlet.nl&deploy%3D1%26oauth_consumer_key%3D17840f699409f5031c22a6e4af15961e9627c168cd0ae71f9c14f71b4097a0b6%26oauth_nonce%3D1444927941574%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1444927941%26oauth_token%3Df3c29a8b2c7988e00947d8c5836ef0ff1883556d96b8beac5bbbdda001ba0292%26realm%3DTSTDRV1403065%26script%3D546
:私は私のダミーのRestletに到達するために使用
URLは、だから私は(ステップ6からステップ5から "CONSUMER_KEY" と "トークン") "の署名文字列を" 生成https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=546&deploy=1
ました
この文字列と "consumer_secret & token_secret"を使って "signature"を生成しました。
OAuth oauth_signature="7doRJOJyV36Av4e4BBUgoOPn7Vk%3D", oauth_nonce="1444927941574", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="17840f699409f5031c22a6e4af15961e9627c168cd0ae71f9c14f71b4097a0b6", oauth_token="f3c29a8b2c7988e00947d8c5836ef0ff1883556d96b8beac5bbbdda001ba0292", oauth_timestamp="1444927941", realm="TSTDRV1403065"
その後
私は私の残りのクライアントでこのヘッダーを使用してNLAuthヘッダは、この残りのクライアントで完全に動作している間(「INVALID_LOGIN_ATTEMPT」-errorを持って、このユーザーとこのダミー:ヘッダーには、次を見ていました-restlet)。
このオンラインツールで自分の署名アルゴリズムを確認しました:http://nouncer.com/oauth/authentication.html同じトークン/タイムスタンプ/ノンス/などで同じ結果が表示されます。私は、NetSuite環境(ユーザ/ロール/何か他のもの)を設定する際に何かを見逃したと思います。反対側のNetSuiteヘルプセンターでは、「OAuthヘッダーのナンス、コンシューマキー、トークン、または署名が無効な場合、INVALID_LOGIN_ATTEMPTエラーが返されます。
どうか私に教えてください。
ありがとう、prasun!スクライブのあなたの例は、魅力のように機能します。あなたが私のJavaコードについて正しいと感じる。 :( – Logrus