ironWiFiのAPIを使ってみたらめっちゃハマった話

SaaS

ironWiFiというCloud Radiusサービスがあるのですが、このAPIの使い方にハマったので共有していきます。

ironWiFiとは

ironWiFiとはクラウド型のRadiusサービスです。WiFiやVPNのネットワーク認証を行うRadiusをクラウドサービス化したものです。これの基本的な使い方は別の記事で説明していきますね。

ironWiFi API

さて今回はAPIの使い方なのですが、表に出ている情報がほぼ存在しないです。

https://www.ironwifi.com/documentation/api/

ironWiFiのRest APIドキュメント

ユーザを全取得してみる

まずは簡単なAPIを実行して、ironWiFi APIの使い方を学ぶということでこれを選びました。が、、結果的にめちゃめちゃハマりました。

ドキュメントに書いてあるユーザ取得のコマンドがこれ

$ curl 'https://console.ironwifi.com/api/users' -H "authorization: Bearer $key" -H 'accept: application/json, text/plain, */*'

でも、これを実行しても

{"_links":{"self":{"href":"https:\/\/console.ironwifi.com\/api\/users"}},"_embedded":{"users":[]},"page_count":0,"page_size":25,"total_items":0,"page":0}

と、ユーザがない、、とのレスポンスが帰ってくるだけ。そんなわけないんですよ、この時点ですでにAzureADと同期させてユーザ作成しているんですから。

あれこれ、試しても結果は変わらない。。。そこでふと管理コンソールを見てみると、環境を選択する画面が、、

環境を選択する画面

最初に管理コンソールからあれこれ設定したときに、Tokyoを選んだことを思い出しました。そこで、Globalに切り替えてユーザを見てみると、存在しない。

ということは、ドキュメントに書いてある↑のcurlで見ているのはGlobal環境では?とひらめきました。しかしながらドキュメントには他の環境のURLが書いてない、、、

ということで、サポートに聞いたら、Tokyoはasia-northeast1.ironwifi.comとのこと。てかブラウザのURLアドレス欄にも乗ってましたねw

https://github.com/samuraidays/ironWiFi_get_userlist

ironWiFi_get_userlistソースコード
import requests

url = "https://asia-northeast1.ironwifi.com/api/users"
key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

headers = {
    'authorization': 'Bearer ' + key,
    'content-type': "application/json;charset=UTF-8",
    }

response = requests.request("GET", url, headers=headers)
print(response.text)

pythonがまぁまぁ使い慣れているので、Pythonで書いています。

ハマりポイント

上で語ったようにハマったポイントはurlの部分です。

APIドキュメントに記載例のあるURLはhttps://console.ironwifi.com/api/usersなのですが、これはGlobalという環境のURLです。しかし、私が設定している環境はasia-northeast1という環境だったので、ここでハマりました。

ここはブラウザのURLアドレス欄で簡単にわかります。

レスポンス

1ユーザ分の値です。

    "users": [
        {
            "id": "XXXXXXXXXXXXXXXXXXXXXXXXX",
            "username": "test.user01@XXXXXX.jp",
            "email": "test.user01@XXXXXX.jp",
            "firstname": "test",
            "lastname": "USER01",
            "fullname": "test USER01",
            "notes": null,
            "series": null,
            "phone": null,
            "creationdate": "2019-09-26 07:53:14",
            "deletiondate": null,
            "authdate_orig": "2019-10-02 08:02:08",
            "authdate": "518418",
            "source": "XXXXXXXXXXXXXXXXXXXXXXXXX",
            "_links": {
                "self": {
                    "href": "https://asia-northeast1.ironwifi.com/api/users/XXXXXXXXXXXXXXXXXXXXXXXXX"
                }
            }
        },

使い方

実際に業務で使っているわけではないのですが、使い方としては下記が想定されます

  1. ユーザ管理やアカウントの棚卸し
  2. 他のAPIを実行するためにuseridを取得する

実際に証明書を発行するAPIを実行するときなどにはuseridが必要になるため、ここからuseridを取得しています。

タイトルとURLをコピーしました