はじめに
本稿では Cisco Application Centric Infrastructure (ACI) における API 利用の最初の一歩であるログイン認証の Token の取得方法について解説します。
本稿では Postman と cURL を用いた Token の取得方法を解説します。
利用した環境は下記になります。
APIC : 5.2(2g)
Postman : v9.1.3 ( for Windows 64 bits )
cURL : 7.68.0
Postman を利用する場合
Postman を使用した操作については「REST クライアントを用いた設定」も参照してください。
Postman アプリのインストール
公式サイトから Postman アプリをインストールし、アプリを起動してください。
※ 無料アカウントを作成しサインインが必要です。
Token の取得定義
Collections を選択し、New をクリックして新しい Workspace を作成します。

HTTP Request を選択します。

POST を選択し、'https://<APIC IP Address>/api/aaaLogin.json' を URL として入力します。
なお、<APIC IP address> は「アクセスする APIC の Management IP Address」を表します。
次に Body をクリックして raw を選択し形式を JSON にします。
送信する Body のデータには下記を入力します。
なお、<Username> は「ログインに使用するUsername」、<Password> は「ログインに使用するUserのPassword」を表しています。
{
"aaaUser": {
"attributes": {
"name": "<Username>",
"pwd": "<Password>"
}
}
}
例えば、User が「admin」でその Password が「cisco」で APIC の IP Address が「192.168.1.1」の場合、下記のようになります。

適切な情報の入力が完了したら、Send をクリックして Request を実行します。

成功すると下記のように Token が表示されます。
なお、下記の画像では Token の一部だけを表示していて実際には非常に長い文字列です。
また、Token 取得時の Cookie が有効であれば、下記の文字列をコピーする必要はありません。

取得した Token の動作確認
取得した Token が実際に使えるかを試すため、ACI Fabric 内の Tenant の情報を取得します。
新しい HTTP Request を作成して Get を選択し 'https://<APIC IP Address>/api/node/class/fvTenant.json' を URL として入力して Send をクリックします。
なお、<APIC IP address> は「アクセスする APIC の Management IP Address」を表します。
例えば、APIC の IP Address が「192.168.1.1」の場合、下記のようになります。

Request が成功した場合、下記のような Response を受け取ります。

なお、Cookie がうまく有効でない場合は Headers に下記のような情報を追加することで認証出来るようになります。
XXXXXXXXXXXXXX は取得した Token を表しています。
Cookie: APIC-cookie=XXXXXXXXXXXXXX

cURL を利用する場合
Token の取得
cURL で Token を取得するには下記のコマンドを実行します。
なお、<Username> は「ログインに使用するUsername」、<Password> は「ログインに使用するUserのPassword」、<APIC IP address> は「アクセスする APIC の Management IP Address」をそれぞれ表しています。
curl -X POST -d '{"aaaUser":{"attributes":{"name":"<Username>","pwd":"<Password>"}}}' -k https://<APIC IP Address>/api/aaaLogin.json
例えば、User が「admin」でその Password が「cisco」で APIC の IP Address が「192.168.1.1」の場合、下記のようになります。
curl -X POST -d '{"aaaUser":{"attributes":{"name":"admin","pwd":"cisco"}}}' -k https://192.168.1.1/api/aaaLogin.json
上記のコマンドを実行して成功すると下記のような出力を得ます。
下記の aaaLogin 内の attributes 内の token がここで取得しようとしていた Token です。
なお、下記には XXXXXXXXXXXXXX と短く記載していますが、実際には非常に長い文字列が出力されます。
{"totalCount":"1","imdata":[{"aaaLogin":{"attributes":{"token":"XXXXXXXXXXXXXX","siteFingerprint: (snip) }}}]}
取得した Token の動作確認
取得した Token が実際に使えるかを試すため、下記のコマンドでACI Fabric 内の Tenant の情報を取得します。
なお、<APIC IP Address> は Token を取得した APIC の IP Address で XXXXXXXXXXXXXX の部分に取得した Token を入力してください。
curl -k -X GET -H 'Cookie: APIC-cookie=XXXXXXXXXXXXXX' https://<APIC IP Address>/api/node/class/fvTenant.json
コマンドが成功すると下記のように Tenant の情報が出力されます。
{"totalCount":"25","imdata":[{"fvTenant":{"attributes":{"annotation":"","childAction":"","descr":"","dn":"uni/tn-testtenant", (snip) }}}]}
Token のコピーが不要な方法
下記のように -c で Cookie の情報をファイルに保存しておくことで、Token を手動でコピーする必要は無くなります。
curl -X POST -d '{"aaaUser":{"attributes":{"name":"<Username>","pwd":"<Password>"}}}' -k https://<APIC IP Address>/api/aaaLogin.json -c cookie.txt
下記のように -b でその情報を Request 実行に利用します。
curl -k -X GET -b cookie.txt https://<APIC IP Address>/api/node/class/fvTenant.json
本稿は以上となります。
参考情報
・REST クライアントを用いた設定
・Cisco APIC REST API Configuration Guide, Release 4.2(x) and Later