OpenID Connect Back-Channel Logout 1.0
Back-Channel Logout は、サーバー間の直接通信(バックチャネル)を使用して RP にログアウトを通知する仕様です。
第1部: 概要編
Back-Channel Logout とは?
Back-Channel Logout は、OP が各 RP のバックチャネルエンドポイントに直接 HTTP リクエストを送信してログアウトを通知する仕組みです。
Back-Channel Logout のフロー:
┌────────────┐ ログアウト ┌────────────┐
│ ユーザー │ ───────────────► │ OP │
└────────────┘ │ │
└────────────┘
│
サーバー間直接通信 │
┌────────────────────────┼────────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ RP 1 │ │ RP 2 │ │ RP 3 │
│ Server │ │ Server │ │ Server │
└──────────┘ └──────────┘ └──────────┘
│ │ │
└── Logout Token ────────┴────── Logout Token ────┘
Front-Channel との違い
| 観点 | Back-Channel | Front-Channel |
|---|---|---|
| 通信経路 | サーバー間直接 | ブラウザ経由 |
| 信頼性 | 高い | 低い |
| Cookie | 利用不可 | 利用可能 |
| ブラウザ依存 | なし | あり |
| ITP/Cookie制限 | 影響なし | 影響あり |
Logout Token
OP は Logout Token(JWT)を RP に送信します。
{
"iss": "https://op.example.com",
"sub": "user-123",
"aud": "s6BhdRkqt3",
"iat": 1704067200,
"jti": "logout-token-12345",
"events": {
"http://schemas.openid.net/event/backchannel-logout": {}
},
"sid": "session-abc123"
}
第2部: 詳細編
Logout Token の構造
| クレーム | 必須 | 説明 |
|---|---|---|
iss | ✅ | OP の識別子 |
sub | △ | ログアウトする ユーザーの識別子 |
aud | ✅ | RP のクライアント ID |
iat | ✅ | 発行時刻 |
jti | ✅ | トークンの一意識別子(リプレイ防止) |
events | ✅ | ログアウトイベント |
sid | △ | セッション ID |
注意: sub または sid のどちらかは必須です。
events クレーム
{
"events": {
"http://schemas.openid.net/event/backchannel-logout": {}
}
}
この形式は固定で、ログアウトイベントを示します。
クライアント登録
{
"client_id": "s6BhdRkqt3",
"redirect_uris": ["https://rp.example.com/callback"],
"backchannel_logout_uri": "https://rp.example.com/logout/backchannel",
"backchannel_logout_session_required": true
}