RESTAPI認証
最終更新日: 06 年 2024 月 XNUMX 日LogicMonitor サーバーに送信される各要求は、HTTPS 経由で作成され、完全に認証されます。 すべてのデータは JSON として受信されます。 LogicMonitor の REST API は、API トークン認証方式をサポートしています。
LogicMonitor API 認証はバージョンごとに異なります。
- v1 API 認証 – 基本認証をサポートします。
- v2 および v3 API 認証 - トークンベースの認証 (LMv1 およびベアラー トークン) をサポートします。
ベアラートークン
ベアラー トークンは複数の英数字の組み合わせであり、LogicMonitor によって自動生成されます。ベアラー トークンを使用して、LogicMonitor Python、GO v3 SDK ファイル、および LogicMonitor REST API v3 を使用することを認証できます。
LogicMonitor の顧客は、デバイスのライセンスを購入すると、無記名トークンを取得する資格があります。トークンを取得するために特定のロールは必要ありません。これはユーザーごとに異なります。
ベアラー トークンを取得したら、それを API リクエストに 1 回だけ追加する必要があります。 LogicMonitor REST API コードは、毎回トークンを入力しなくてもトークンを再利用します。 LogicMonitor REST API を使用する開発者は、認証ヘッダーを開発したり、自分自身を認証するためのコマンドを作成したりする必要はありません。
ベアラー トークンの機密性を維持するために、トークンを保存すると、システムはその一部をアスタリスク (*) で自動的にマスクします。詳細については、を参照してください。 ベアラートークン.
LMv1 トークン
LMv1 トークンベースの認証方法では、すべてのリクエストに次の内容を含むカスタム HTTP ヘッダーを含める必要があります。
- あなたの API トークン アクセス ID
- API トークン アクセス キーに基づく Base64 でエンコードされた HMAC 署名
- エポックミリ秒単位のタイムスタンプ
具体的には、リクエストの詳細を連結して文字列を形成し、アクセス キーを使用してその文字列の HMAC-SHA256 を計算する必要があります。 結果をエンコードするには Base64 が必要です。
Base64 でエンコードされた完全な HMAC 署名は、次の形式である必要があります。
signature = base64(HMAC-SHA256(Access Key,HTTP VERB + TIMESTAMP (in epoch milliseconds) + POST/PUT DATA (if any) + RESOURCE PATH) )
完全な認証ヘッダーは、次の形式である必要があります。
Authorization: LMv1 AccessId:Signature:Timestamp
認証はどのように行われますか?
LogicMonitor サーバーが API リクエストを受信すると、指定されたタイムスタンプが現在の時刻から 30 分以内であることを確認します。 その要件が満たされている場合、指定されたアクセス ID に関連付けられたアクセス キーを取得し、上記の形式で署名を計算します。 サーバーは、その署名をリクエストに含まれる署名と比較します。 XNUMX つの署名が一致する場合、リクエストは認証されますが、API トークンに関連付けられたアクセス許可が引き続き適用されます (トークンのアクセス ID とアクセス キーには、要求されたアクションを実行するための十分なアクセス許可が必要です)。 XNUMX つの署名が一致しない場合は、エラーが返されます。
ご注意: クエリ パラメーター (フィルター、フィールド、並べ替え、サイズなど) はリソース パスの一部とみなされず、認証署名の計算に含めてはなりません。
基本認証
LogicMonitor の v1 用 REST API は、HTTP 基本認証をサポートしています。 HTTP 基本認証を使用するには、各要求に次の認証情報を含む HTTP ヘッダーを含める必要があります。 認証:基本 `echo -n ユーザー名:パスワード | base64`
ほとんどすべてのWebクライアントはHTTP基本認証をサポートしており、このヘッダーを作成します。
次の例では、ユーザー APIユーザー アカウントで api.logicmonitor.com ウェブサイト グループの更新をリクエストします。
例
curl --user 'apiUser:example' -H "Content-Type: application/json" -d '{"name":"newWebsiteGroup","description":"testSites","disableAlerting":false}' -X PUT "https://api.logicmonitor.com/santaba/rest/service/groups/7" -v
次の例では、ユーザー APIユーザー アカウントで api.logicmonitor.com すべての Web サイト グループを取得するように要求します。
wget --auth-no-challenge --http-user='apiUser' --http-password='example' "https://api.logicmonitor.com/santaba/rest/website/groups"