UCIDM API

UCIDM は ID 連携のための Web API を提供します。

認証を必要としない Web API

例えば、API サーバーとの疎通確認のために使う ping API は次のように実行します。

$ curl "https://${ホスト名}:${ポート番号}/status/ping"
{
  "message": "pong",
  "remoteAddr": "172.18.0.1:54960",
  "realIP": "172.18.0.1",
  "updatedAt": "2024-11-28T08:07:08.680627934Z"
}

他にも UCIDM のバージョン情報を取得もできます。

$ curl "https://${ホスト名}:${ポート番号}/status/version"
{
  "serverVersion": "f8802cf",
  "idFederationClientVersion": "ef562e7",
  "mongoDBVersion": "8.0.3",
  "rabbitMQVersion": "4.0.3"
}

認証を必要とする Web API

UCIDM の大半の Web API を呼び出すには認証を必要とします。UCIDM は次の認証に対応しています。

  • ベーシック認証
  • アカウント認証
  • LDAP 認証
  • SAML 認証

アカウント認証により、アクセストークンを取得して Web API を呼び出すには ucidm-cli コマンドを使うと便利です。

$ cp /opt/osstech/share/ucidm/exports-ucidm-cli.sh .
$ vi exports-ucidm-cli.sh  # 接続先の設定に変更します
export API_SCHEME="https"
export API_HOST="${ホスト名}"
export API_PORT="${ポート番号}"
export API_ACCOUNT_AUTH_USER="${任意のアカウント}"
export API_ACCOUNT_AUTH_PASSWORD="${アカウントのパスワード}"

複数の環境変数を設定すると、優先度によって意図していない設定が使われる可能性があるため、不要な API_BASIC_AUTH_XXX や API_LDAP_AUTH_XXX の設定はスクリプトから削除してください。

ucidm-cli の token サブコマンドでアクセストークンを取得できます。次のように実行すると AT という環境変数にアクセストークンがセットされます。

$ eval $(/opt/osstech/bin/ucidm-cli token)
$ echo $AT  # アクセストークンの値を確認
eyJhbGc...

ヘッダーにアクセストークンを指定して Web API を呼び出します。

$ curl --header "Authorization: Bearer ${AT}" \
       "https://${ホスト名}:${ポート番号}/p/ping"
{
  "message": "pong",
  "remoteAddr": "172.18.0.1:44582",
  "realIP": "172.18.0.1",
  "updatedAt": "2025-04-21T06:51:16.570360652Z"
}

認証を行わない場合は 401 エラーが返ります。

$ curl -i "https://${ホスト名}:${ポート番号}/p/ping"
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=UTF-8
Www-Authenticate: basic realm=Restricted
Date: Mon, 26 Feb 2024 05:28:45 GMT
Content-Length: 27

{"message":"Unauthorized"}

UCIDM API ドキュメント

Web API の仕様については UCIDM API に同梱している次のドキュメントを参照してください。

https://${ホスト名}:${ポート番号}/docs