はじめに
本稿では 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 を作成します。
![01_new.png 01_new.png](https://community.cisco.com/t5/image/serverpage/image-id/136183i4CA5F8C646753AA3/image-size/large?v=v2&px=999)
HTTP Request を選択します。
![02_HTTP_Request.png 02_HTTP_Request.png](https://community.cisco.com/t5/image/serverpage/image-id/136184iB5ED361BE97A378E/image-size/large?v=v2&px=999)
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」の場合、下記のようになります。
![03_aaaLogin.png 03_aaaLogin.png](https://community.cisco.com/t5/image/serverpage/image-id/136185i1DF27C695FDD071F/image-size/large?v=v2&px=999)
適切な情報の入力が完了したら、Send をクリックして Request を実行します。
![04_Send.png 04_Send.png](https://community.cisco.com/t5/image/serverpage/image-id/136186i3BEBB6DF04C4CCFC/image-size/large?v=v2&px=999)
成功すると下記のように Token が表示されます。
なお、下記の画像では Token の一部だけを表示していて実際には非常に長い文字列です。
また、Token 取得時の Cookie が有効であれば、下記の文字列をコピーする必要はありません。
![05_Token.png 05_Token.png](https://community.cisco.com/t5/image/serverpage/image-id/136187i0369904CF527021A/image-size/large?v=v2&px=999)
取得した 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」の場合、下記のようになります。
![06_Get_Tenant.png 06_Get_Tenant.png](https://community.cisco.com/t5/image/serverpage/image-id/136199iB23F5D303EE32A5D/image-size/large?v=v2&px=999)
Request が成功した場合、下記のような Response を受け取ります。
![07_Response.png 07_Response.png](https://community.cisco.com/t5/image/serverpage/image-id/136200i55A9CF383C57618D/image-size/large?v=v2&px=999)
なお、Cookie がうまく有効でない場合は Headers に下記のような情報を追加することで認証出来るようになります。
XXXXXXXXXXXXXX は取得した Token を表しています。
Cookie: APIC-cookie=XXXXXXXXXXXXXX
![08_header.png 08_header.png](https://community.cisco.com/t5/image/serverpage/image-id/136201i0780C4C2508FACA3/image-size/large?v=v2&px=999)
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