日本語フォーラム

Reply
Occasional Contributor I

Aruba Central に cURL でアクセスすることは可能でしょうか?

Aruba Central に対して cURL を使ってアクセスし、イベント情報を取得する運用が必要になっているのですが、cURL でアクセスした際に、CSRF-Token がうまく読み込んでもらえません。
解決する方法はありますでしょうか。

 

"Central OAuth Token Generation API Guide" を参考にしてリクエストをしておりました。

 

Step 1 のリクエストは成功し、csrftoken と session を取得することができました。

 

curl -H 'Content-Type:application/json' -d '{"username":userName,"password":password}' https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/login?client_id= <client_id> --dump-header -

 

Step2 のリクエストでは、

curl -X POST -H 'Content-Type:application/json' -b '"csrftoken"=XXXXXXXX' -b '"session"=XXXXXXXX' 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/client_credentials?client_id= <client_id>'

 

Step2 以降のリクエストを投げた際に、以下の結果が返ってきております。

{
"error": "CSRF token missing or incorrect.",
"status_code": 400
}

 

Step1で取得できた csrftoken と session を -c Cookie.txt を使いファイルを作成し、-b Cookie.txt としてアクセスしても同様のエラーとなってしまいます。

 

どなたかご教示いただければ幸いです。

Highlighted
Aruba Employee

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

HeaderにKey=X-CSRF-Token, value=csrftokenの値を追加頂くとうまく動作すると思うのですがいかがでしょうか。 

 

例:

-H 'X-CSRF-Token: <your csrf token>'

 

CentralのAPI Guideが十分でないようですが、"CSRF token missing or incorrect."で検索すると、Aruba Centralに関係なく、トラブル例がいくつか出てくるかと思います。

 

 

Occasional Contributor I

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

ありがとうございます。

いろいろとパターンを考えて試しているのですが、すべて同様のエラーとなってしまっておりました。

 

curl  -X POST -H 'Content-Type:application/json' -H 'X-CSRF-Token:XXXXXXXX' -H 'session:XXXXXXXXX' -d '{ "customer_id": "XXXXXXXXXXX"}' 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/client_credentials?client_id=XXXXXXXXXXX'

 

curl -X POST -H 'Content-Type:application/json' -H '"X-CSRF-Token":XXXXXXXX' -H '"session":XXXXXXXXX' -d '{ "customer_id": "XXXXXXXXXXX"}' 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/client_credentials?client_id=XXXXXXXXXXX'

 

curl -X POST -H 'Content-Type:application/json' -b 'X-CSRF-Token=XXXXXXXX' -b 'session=XXXXXXXXX' -d '{ "customer_id": "XXXXXXXXXXX"}' 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/client_credentials?client_id=XXXXXXXXXXX'

 

curl -X POST -H 'Content-Type:application/json' -b '"X-CSRF-Token"=XXXXXXXX' -b '"session"=XXXXXXXXX' -d '{ "customer_id": "XXXXXXXXXXX"}' 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/client_credentials?client_id=XXXXXXXXXXX'

 

curl でのリクエストでは動作しないのではないかと不安になっておりました。

Aruba Employee

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

curlだとサポートしていないということはないはずですが、POSTMANなど他のツールでもお試しいただけますでしょうか。

 

こちらの環境では以下のコマンドで動作することは確認できました。

 

curl -X POST  'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/?client_id=XXX&response_type=code&scope=all' -H 'Content-Type: application/json' -H 'X-CSRF-Token: XXX' -b cookie.txt
Occasional Contributor I

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

情報ありがとうございます。

curl をサポートしていないということではないのですね。

ご教示いただいた方法で再度実行してみましたが、エラー内容は変わりませんでした。

手順としては以下となります。

 

1.下記コマンドを実行
curl -H 'Content-Type:application/json' -c cookies.txt -d '{"username":"XXXXXXXX","password":"XXXXXXXX"}' https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/login?client_id=XXXXXXXXXX --dump-header -


2. 返ってきた Csrftoken を入れて下記コマンドを実行
curl -X POST 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/?client_id=XXXXXXXXXXX&response_type=code&scope=all' -H 'Content-Type: application/json' -H 'X-CSRF-Token: XXXXXXXXXX' -b cookie.txt

 

実行環境としましては、 Windows Cygwin で curl となります。

一度、POSTMANのツールを実行してみたところ、処理としては問題なく  auth_code の取得はできましたが、bash/cURL script での運用を考えた場合、cURL での取得ができればと考えております。

 

手順など間違っている場合、ご指摘いただければと思います。

Aruba Employee

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

コマンド自体は問題無いように見受けられます。

 

Cygwin環境とCookie関連の問題の可能性もあるので、

LinuxやMac環境でも一度お試し頂けますでしょうか。

私はMacbookで試験しました。

 

また、Cygwin環境でCookieを用いたcurlをAruba Central API以外で正常に動作できるかどうかもご確認頂くのが良いかと思います。

Occasional Contributor I

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

ご確認ありがとうございます。

 

Linux 環境で下記コマンドを実行したところ、

"CSRF token missing or incorrect." というエラーではなく、

{"extra": null ; "message": Customer ID missing"} という

エラーになりました。

 

curl -X POST 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/?client_id=XXXXXXXXXXX&response_type=code&scope=all' -H 'Content-Type: application/json' -H 'X-CSRF-Token: XXXXXXXXXX' -b cookie.txt

 

マニュアルを見ていると、上記コマンドでは Customer ID を指定する必要はなさそうですが、念のため Customer ID を指定した下記コマンドを実行したところ、結果としては {"extra": null ; "message": null} と返ってきました。

 

curl -X POST 'https://api-ap.central.arubanetworks.com/oauth2/authorize/central/api/?client_id=XXXXXXXXXXX&response_type=code&scope=all' -H 'Content-Type: application/json' -H 'X-CSRF-Token: XXXXXXXXXX' -b cookie.txt

-d '{"customer_id":"XXXXXXX"}'

 

customer_id は swagger を利用して取得できた customer_id を記載いたしました。

Occasional Contributor I

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

Mac環境 でも実施してみたのですが、Mac環境でも同様のエラーが返ってきている状況でした。

Aruba Employee

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

原因はわかりかねます。

ご認識の通り、Customer IDは不要です。

STEP 1 に何か問題があるのかもしれません。

 

恐らく何か見落としがあるのだと思いますが、一度Aruba Partner様かAruba担当にご相談頂くのが早いかもしれません。

 

また、GUIで一度tokenを出力すれば、その後、そのtokenをAPIでRefreshすることが可能なので、そちらの運用を検討頂くのも良いかと思います。以下がswaggerです。

https://api-ap.central.arubanetworks.com/swagger/central/#!/refresh_api_token/XXX_XXX

Occasional Contributor I

Re: Aruba Central に cURL でアクセスすることは可能でしょうか?

本日改めて同じコマンドを実行したところ、エラーが解消されておりました。

全く同じ(CSRF-Tokenは異なりますが)リクエストを投げて、想定通りの結果を取得することができました。

 

ご対応いただきありがとうございました。

## 改善された要因など想定・推測はありますでしょうか?

Search Airheads
cancel
Showing results for 
Search instead for 
Did you mean: