メインコンテンツへスキップ

認証

すべての IDCloud API(Web & SDK および API コントラクト)は、OAuth2 JWT Bearer Grant TypeRFC 7523)を使用します。バックエンドで短命の JWT アサーションを生成し、それを Bearer トークンと交換して、以降のすべての呼び出しでそのトークンを使用します。

クライアントサイドでは絶対に行わないでください

JWT アサーションはバックエンドのみで生成する必要があります。フロントエンドコード、モバイルアプリ、リポジトリ、またはログに秘密鍵を公開しないでください。

認証情報の取得

トークンを生成する前に、Unico によってプロビジョニングされたサービスアカウントが必要です。Unico サポートに連絡し、以下の情報を提供してください:

  • サービスアカウント名(最大 12 文字)
  • 担当者の氏名、メールアドレス、電話番号(ブラジル、米国、またはメキシコの番号のみ)

以下の情報が提供されます:

  • 一意のアカウント名
  • テナント ID
  • 基本 JWT ペイロード
  • 秘密鍵ファイル(.pem 形式)
環境ごとに 1 つのアカウント

UAT本番環境のサービスアカウントは別々に管理してください。

JWT アサーションの構築

アサーションは JWS コンパクト形式の JWT です:{Base64url(Header)}.{Base64url(Payload)}.{Base64url(Signature)}

Header
{
"alg": "RS256",
"typ": "JWT"
}
Payload
クレーム備考
iss<account_name>@<tenant_id>.iam.acesso.io認証情報と一緒に提供されます
audhttps://identityhomolog.acesso.io(UAT)または https://identity.acesso.io(本番)トークンエンドポイントのホストと一致する必要があります
scope*すべての権限を付与します
iatUnix タイムスタンプ(秒)JWT が発行された時刻
expiat + 最大 3600iat から 1 時間を超えることはできません
{
"aud": "https://identity.acesso.io",
"scope": "*",
"iat": 1738086000,
"exp": 1738089600
}
Signature

Unico から提供された .pem 秘密鍵を使用して、RS256(RSA + SHA-256)でヘッダーとペイロードに署名します。

追加クレームを加えないでください

上記以外のフィールド(例:subjtinbf)は 1.2.22 エラーを引き起こします。示されているクレームのみを使用してください。

トークンのリクエスト

トークンエンドポイントは両方のコントラクトで同一です:

環境エンドポイント
本番POST https://identity.acesso.io/oauth2/token
UATPOST https://identityhomolog.acesso.io/oauth2/token
Request
パラメーター
Content-Typeapplication/x-www-form-urlencoded
grant_typeurn:ietf:params:oauth:grant-type:jwt-bearer
assertion署名済み JWT
curl -X POST https://identity.acesso.io/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" \
-d "assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
Response
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}
フィールド説明
access_tokenstringJWT アクセストークン。すべての API 呼び出しで Authorization: Bearer <token> として使用します。
expires_ininteger有効期限(秒単位)。例:3600
token_typestring常に Bearer

トークンの使用

すべての API リクエストの Authorization ヘッダーにトークンを追加します。ヘッダーは両方のコントラクトで同一です — 異なるのは呼び出す API のホストとパスです:

コントラクト本番ホストUAT ホスト
Web & SDKhttps://api.idcloud.unico.apphttps://api.idcloud.uat.unico.app
APIhttps://api.id.unico.apphttps://api.id.uat.unico.app

Web & SDKAuthorization は唯一必要な認証ヘッダーです:

curl -X POST https://api.idcloud.unico.app/client/v1/process \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ ... }'

APIAuthorizationAPIKEY ヘッダーと合わせて使用します:

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{ ... }'

トークンの更新

トークンは 3600 秒後に失効します。バックエンドでプロアクティブな更新を実装してください:

  • トークンレスポンスから expires_in を追跡し、有効期限のタイムスタンプを保存します。
  • 有効期限の10 分前以内に新しいトークンをリクエストします。
  • 本番環境で更新をトリガーするために 401 を待たないでください。

API リファレンス

トークンエンドポイントの完全な OpenAPI 仕様は authentication.yaml で参照できます。

メソッドパス説明
POST/oauth2/token署名済み JWT アサーションを Bearer アクセストークンと交換する

エラーコード

コード説明対処法
1.0.1iss の形成に使用された ID が正しくありませんiss フィールドが秘密鍵生成時に提供されたテナント ID と一致しているか確認してください
1.0.14アプリケーションがアクティブではありません使用しているアプリケーションがアクティブかどうかプロジェクトマネージャーに確認してください
1.1.1scope パラメーターが提供されていませんJWT ペイロードに "scope": "*" を追加してください
1.2.4JWT アサーションが無効ですJWT アサーションが有効ではなくなっています。原因は2つあります: (a) 現在時刻が exp を過ぎている(JWT が本当に失効 — 各トークンリクエストのために新しいアサーションを生成してください); または (b) expiat + 3600 を超えている(有効期間が長すぎる — expiat + 3600 に制限してください)。
1.2.5JWT 検証に失敗しましたJWT を検証できません。パラメーターを確認し、RS256 と正しい秘密鍵で署名されていることを確認してください
1.2.6秘密鍵が無効になっていますJWT の署名に使用した秘密鍵が受け入れられなくなりました。アカウントの新しい認証情報をリクエストしてください
1.2.7JWT はすでに使用されていますJWT はすでに使用されているため、受け入れられなくなりました。各トークンリクエストに新しいアサーションを生成してください
1.2.11アカウントがアクティブではありません使用しているアカウントがアクティブではありません
1.2.14アカウントに必要な権限がありません使用しているアカウントには必要な権限がありません
1.2.18アカウントが一時的にロックされています無効な認証試行回数を超えたため、アカウントが一時的にロックされています
1.2.19許可されていないユーザーなりすましJWT に、なりすましが許可されていないアカウントを指す sub クレームが含まれています。ペイロードから sub クレームを削除してください。
1.2.20JWT デコードに失敗しましたJWT のデコードに失敗しました。トークン形式と RS256 で署名されていることを確認してください。
1.2.21誤った秘密鍵 / 認証失敗このアカウントの既知のキーに対して JWT 署名を検証できませんでした。このサービスアカウントと環境に正しい .pem 秘密鍵を使用していることを確認してください。
1.2.22ペイロードに許可されていないフィールドがありますJWT に許可されていない追加ペイロードフィールドが含まれています。このガイドに記載されていないクレーム(例:subjtinbf)を削除してください。注: sub クレームを含めて 1.2.19 を受け取った場合、そのエラーが優先されます。
1.3.1IP アクセス制限お使いの IP はこのアカウントの許可リストにありません
1.3.2時間ベースのアクセス制限リクエストがこのアカウントの許可された時間枠外です

次のステップ