For Authlete 2.x documentation, see 2.x version.
はじめに
RFC 8705 の「2. Mutual TLS for OAuth Client Authentication」 では、認可サーバーが相互 TLS を用いてクライアントを認証する方法が定義されています。 Authlete は、認可サーバーが TLS のクライアント証明書を用いてクライアントを認証できる機能を提供しています。本記事では、この機能の概要と有効化の手順を説明します。Authlete における TLS クライアント認証の仕組み
Authlete の TLS クライアント認証機能では、クライアントの認証に「クライアント ID (client ID)」と「サブジェクト名 (subject name)」(subject distinguished name / subject alternative name)を使用します。 トークンリクエストの処理時、認可サーバーはclient ID と subject name のプロパティを Authlete に渡す責務を負います。クライアント ID はクライアントによるトークンリクエストの内容に含まれるため、認可サーバーが意識する必要はありません。一方「subject name」はリクエストの内容には含まれず、クライアント証明書に含まれており、クライアントと認可サーバーとの間の相互 TLS 接続から取得できます。
Authlete 側では、TLS_CLIENT_AUTH クライアント認証メソッドを有効にし、クライアントの subject name を登録する必要があります。
サービスの設定
サービスで Authlete の TLS クライアント認証機能を有効にするには、次の手順を実施します。
- Authlete 管理コンソールにログインします。
- 組織名をクリックし、対象のサービスを選択します。
- 「サービス設定」>「エンドポイント」>「トークン」>「一般」に移動します。
- 「クライアント認証方式」で
TLS_CLIENT_AUTHメソッドを選択します。 - 「変更を保存」をクリックしてサービス設定を更新します。

クライアントの設定
この例では subject name の一種として Subject Distinguished Name(Subject DN)を使用していますが、Authlete では Subject DN に加えて、さまざまな種類の Subject Alternative Name(SAN)にも対応しています。クライアントで
TLS_CLIENT_AUTH メソッドを有効にするには、次の手順を実施します。
- Authlete 管理コンソールにログインします。
- 組織名をクリックし、対象のサービスを選択します。
- 「クライアント設定」>「エンドポイント」>「トークン」>「一般」に移動します。
- 「クライアント認証方式」でドロップダウンメニューを開き、
TLS_CLIENT_AUTHメソッドを選択します。 - 「変更を保存」をクリックして更新内容を適用します。

subject name を登録するには、次の手順を実施します。
- 「クライアント設定」>「エンドポイント」>「トークン」>「MTLS」に移動します。
-
「サブジェクト識別名」に任意の値を入力します。クライアント認証に使用する、次のようなその他の name 値を指定することもできます。
- 「サブジェクト代替名DNS」
- 「サブジェクト代替名IPアドレス」
- 「サブジェクト代替名URI」
- 「サブジェクト代替名メール」
- 「自己署名証明書キーID」
- 「変更を保存」をクリックして更新内容を適用します。

例
以下は、/auth/token へのリクエストの例です(読みやすさのために折り返しています)。認可サーバーはクライアントとの間で相互 TLS 接続を確立し、その接続からクライアントの証明書を取得して、API へリクエストを行います。 クライアント ID(client_id)を含むトークンリクエストの内容を “parameters” の値として指定し、クライアント証明書を “clientCertificate” の値として指定します。clientAuthMethod が TLS_CLIENT_AUTH となっており、クライアントが相互 TLS を用いて認証されたことがわかります。(可読性のため折り返しています)
関連情報
この記事では、Authlete におけるクライアント認証設定の基本を説明しています。
この記事では、「RFC 8705 OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens」で定義された「相互 TLS による証明書バインドアクセストークン」を Authlete で利用するための設定手順を説明しています。
このビデオは、2018 年 7 月 24 日に東京で開催された「Financial APIs Workshop 2018 」のセッションの一つです。Authlete の Justin Richer が、OAuth インフラを構築するための Authlete 独自のセミホスト型アプローチと従来型アプローチの比較、そして Financial-grade API(FAPI)を実現するために Authlete がどのようにクライアント認証機能を拡張し相互 TLS に対応したかを解説しています。