Amazon Cognito で認証し、一般ユーザでもすぐに安全に利用開始。センサ・グラフ・画像・アラートを一気通貫に提供します。
Amazon Cognito User Pool と Hosted UI を利用し、OAuth2 Authorization Code Flow + PKCE で access token (JWT) を取得します。API は受け取った JWT を検証します。
SameSite 設定+二重送信トークンやOrigin/Referer チェック)。※ OAuth リダイレクトの state(必須)と nonce は、ログイン要求のなりすまし防止の仕組みであり、API の CSRF トークンとは別物です。
/oauth2/token に POST(client_id/secret または PKCE)Authorization: Bearer <access_token> を付与GET /v2/sensorinfo/th(温湿度)//door(ドア)//jinkan(人感)
POST /v2/graphdata:期間・センサID配列でポイント列(chart 用)と行テキストを返却
POST /v2/imagedata_session(テスト用:署名 Cookie 発行)/GET /v2/imagedata/{deviceid}/zip(範囲 ZIP)
POST /v2/alertsetting:1台/全台のアラート更新(discriminator: sensorkind)
全体として Bearer(JWT) を要求。SPA(PKCE + Authorization ヘッダ)では CSRF トークン不要。BFF(Cookie セッション)の場合は 書き込み系に CSRF 必須(二重送信トークン+Origin/Referer チェック+SameSite 設定)。
※ 認証は Cognito に統一。旧 /v2/login 等は不要です。詳細仕様は Swagger(OpenAPI 3.0.3)をご参照ください。
# 1) ユーザを Cognito Hosted UI にリダイレクト
GET https://<domain>.auth.<region>.amazoncognito.com/oauth2/authorize?&n
response_type=code&client_id=<CLIENT_ID>&n
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback&scope=openid+email+profile
# 2) code を受け取りトークン交換(バックエンド)
curl -sS -X POST \
-H 'Content-Type: application/x-www-form-urlencoded' \
-u '<CLIENT_ID>:<CLIENT_SECRET>' \
-d 'grant_type=authorization_code' \
-d 'code=<CODE_FROM_CALLBACK>' \
-d 'redirect_uri=https://app.example.com/callback' \
https://<domain>.auth.<region>.amazoncognito.com/oauth2/token | jq
# => access_token, refresh_token を取得
# 3) API 呼び出し(温湿度一覧)
ACCESS=<access_token>
curl -sS https://<host>/v2/sensorinfo/th \
-H "Authorization: Bearer ${ACCESS}" | jq
# 4) グラフデータ取得(期間 [ms] とセンサID配列)
curl -sS https://<host>/v2/graphdata \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ${ACCESS}" \
--data '{
"from": 1755584741000,
"to": 1755671125000,
"sensors": [{"sensorId":"20100479a"}]
}' | jq
# 5) 画像の ZIP ダウンロード(JST ファイル名判定/mode で上限動作)
curl -sS -D - \
"https://<host>/v2/imagedata/C0001002/zip?&n
from=2025-08-20T00:00:00Z&to=2025-08-21T00:00:00Z&mode=truncate" \
-H "Authorization: Bearer ${ACCESS}" -o images-20250820.zip
※ 本図は概念図。導入環境に合わせて最適化します。
ケースにより異なります。
SameSite(Lax/Strict)を組み合わせます。CORS は CSRF の代替になりません(同一サイトからの悪用は防げないため)。