キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
告知

Cisco ACI : ACI における REST API 利用のためのログイン認証

657
閲覧回数
0
いいね!
0
コメント

はじめに

本稿では 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

HTTP Request を選択します。

02_HTTP_Request.png

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

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

04_Send.png

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

05_Token.png

取得した 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

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

07_Response.png

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

Cookie:  APIC-cookie=XXXXXXXXXXXXXX

08_header.png

 

cURL を利用する場合

Token の取得

cURL で Token を取得するには下記のコマンドを実行します。
なお、<Username> は「ログインに使用するUsername」、<Password> は「ログインに使用するUserPassword」、<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