External Token認証
このドキュメントは、external-token 方式による外部トークンを使った認証処理の 概要・設定・利用方法 について説明します。
概要
External Token認証は、外部のアイデンティティプロバイダー(IdP)が発行したアクセストークンを使って、ユーザー認証とユーザー情報取得を行う方式です。
主な用途
- 他のIdP(Google、Azure AD、独自IdP等)で認証済みのユーザーを連携
- 既存システムのアクセストークンを使った認証
- API-to-API認証での利用
処理フロー
- クライアントが外部IdPからアクセストークンを取得
- そのアクセストークンをidp-serverに送信
- idp-serverが外部APIにトークンを送信してユーザー情報を取得
- 取得したユーザー情報でidp-server内のユーザーと紐付け
- 認証成功
設定
External Token認証を使用するには、テナントに type = "external-token" の認証設定を登録する必要があります。
基本構造
{
"id": "UUID",
"type": "external-token",
"attributes": {
"service_name": "external-service-name"
},
"metadata": {},
"interactions": {
"external-token": {
"request": {
"schema": {
"type": "object",
"properties": {
"access_token": { "type": "string" }
}
}
},
"execution": {
"function": "http_requests",
"http_requests": [
{ /* ユーザー概要取得API */ },
{ /* ユーザー詳細取得API */ }
]
},
"user_resolve": {
"user_mapping_rules": [ /* ユーザー情報マッピング */ ]
}
}
}
}
Request Schema
External Token認証で受け付けるリクエストの構造:
{
"request": {
"schema": {
"type": "object",
"properties": {
"access_token": {
"type": "string",
"description": "外部IdPが発行したアクセストークン"
}
},
"required": ["access_token"]
}
}
}
Execution: 複数HTTPリクエスト
function: http_requests
複数の外部APIを連続して呼び出し、ユーザー情報を取得します。
HTTP Requests 設定
{
"execution": {
"function": "http_requests",
"http_requests": [
{
"url": "https://external-service.com/user/overview",
"method": "POST",
"header_mapping_rules": [
{
"from": "$.request_body.access_token",
"to": "x-token",
"functions": [
{ "name": "format", "args": { "template": "Bearer {{value}}" } }
]
},
{
"from": "$.unused",
"to": "x-request-id",
"functions": [
{ "name": "random_string", "args": { "length": 6 } },
{ "name": "format", "args": { "template": "trace-id-{{value}}" } }
]
}
],
"body_mapping_rules": [
{ "from": "$.request_body", "to": "*" }
]
},
{
"url": "https://external-service.com/user/details",
"method": "POST",
"header_mapping_rules": [
{ "static_value": "your-client-id", "to": "x-client-id" }
],
"body_mapping_rules": [
{
"from": "$.execution_http_requests[0].response_body.id",
"to": "user_id"
}
]
}
]
}
}
主要項目
| 項目 | 説明 |
|---|---|
url | 外部APIのエンドポイント |
method | HTTPメソッド(POST/GET等) |
header_mapping_rules | HTTPヘッダーのマッピングルール |
body_mapping_rules | リクエストボディのマッピングルール |
Mapping Functions
header_mapping_rulesとbody_mapping_rulesでデータ変換を行います: