Authlete とは?
Authlete は OAuth 2.0 および OpenID Connect を実装するための BaaS(Backend as a Service)です。Authlete が提供する Web API を使うことで、簡単に OAuth 2.0 および OpenID Connect の機能を簡単に実現できます。なぜ Authlete が必要なのか?
サービスの Web API を実装する場合、サービスを提供する側は、OAuth 2.0(及び OpenID Connect)を実装すること必要となります。しかしながら、その実装は容易ではなく、実装に多くのリソース・時間が必要となります。また、個人データを管理すること自体、非常に慎重を要する作業です。限られた社内外のエンジニアのリソースを使い、これら課題を解決しつつ、競合よりも先にサービス提供することは、非常に大変です。 Authlete を使うことで、上記課題を解決できます。Authlete は策定済みないしは策定中の API 認可関連仕様の多くをサポートしています。Authlete を使うことで比較的容易に、Web API を実装することが可能となります。Authlete の仕組み
Authlete は、**認可サーバー自体ではなく、認可サーバーを構築するための API を提供する、独自のアーキテクチャ(Semi-hosted Architecture)**を採用しています。Authlete をご利用いただく際、お客様は、フロントの認可サーバーを自身の環境下に構築し、そこから Authlete にアクセスしていただくことになります。基本的に、エンドユーザーやアプリ開発者が直接 Authlete にアクセスすることはありません。
Authlete の特長
認可サーバーを構築するための API を提供する、という独自アーキクチャの採用により、Authlete は下記のような特長を有します。お好きな開発言語やフレームワークを利用しつつ、開発期間を大幅短縮
お好きな開発言語やフレームワークを利用しつつ、開発期間を大幅短縮

Authlete が他のソリューションと異なる点は、まず、OAuth 2.0 & OpenID Connect サーバーを実装するのに必要な機能を全て Web API として設計・実装した点です。クライアントアプリケーションの登録管理や認可サーバーのメタ情報更新機能だけではなく、認可エンドポイント やトークンエンドポイントなどのエンドポイント群の実装に必要な機能も全て Web API として提供します。
結果、Java、Ruby、PHP、C# など、開発言語やフレームワークを問わず Authlete を利用することができます。OSS ライブラリをご利用いただくことで、数日から数週間で実装することが可能です。
ユーザー同意の UI およびフローを自在に設計
ユーザー同意の UI およびフローを自在に設計
Authlete は、OAuth/OIDC の実装を WebAPI として提供しており、認可エンドポイントやトークンエンドポイントの実装は、お客様の環境下で実装・運用されます。そのため、ユーザー同意の UI や フローを自在に設計することが可能です。

Authlete 1つで複数の認可サーバー & API クライアントを運用・管理
Authlete 1つで複数の認可サーバー & API クライアントを運用・管理

Authlete ユーザーは、OAuth/OIDC サーバーを複数管理することが可能です。
Authlete が提供する管理コンソールも複数の実装インスタンスを管理する前提で作られており、設定の異なるインスタンスをコンソールから簡単に追加・管理することが可能です。
そのため、開発工数の大幅な増加無しに、用途毎に OAuth/OIDC サーバーを用意することができます。「スマートフォンアプリ用と内部サーバー間連携用の OAuth/OIDC サーバーを分ける」、「一般ユーザー用と管理コンソールユーザー用の OAuth/OIDC サーバーを分ける」といった柔軟なシステム設計を行えます。
また、各認可サーバーに紐づくクライアントアプリのメタ情報を管理するためのコンソールも提供しています。
ID 管理、ユーザー認証、ログイン状態管理、API 管理、不正検出など任意のソリューションを利用
ID 管理、ユーザー認証、ログイン状態管理、API 管理、不正検出など任意のソリューションを利用

Authlete は認可に特化しており、任意のユーザー認証、ID 管理、API 管理ソリューションと組み合わせてお使いいただけます。すでに利用されている認証・ID 管理基盤をそのまま利用し、最小の開発工数で、OAuth/OIDC を実装することも可能となります。
エンドユーザーの個人情報は自社で管理
エンドユーザーの個人情報は自社で管理
Authlete を使う場合、Authlete へ手渡す必要があるエンドユーザーの情報は各ユーザーの一意識別子(subject)のみです。Authlete はエンドユーザーの一意識別子を受け取り、トークンやその他の情報と紐づけます。
つまり、エンドユーザーの名前やメールアドレス、認証情報等の個人情報を Authlete に共有する必要はありません。これは、他の認証・認可一体型のソリューションと大きく異なる点の一つです。
なお、ID トークンを生成する際、トークンに埋め込む情報を Authlete の API にお送りいただくことで OpenID Connect で定義されている機能を実現できます。
最新の OAuth および OpenID Connect の仕様を利用
最新の OAuth および OpenID Connect の仕様を利用
Authlete は、RFC6749 をはじめ、様々な仕様をサポートしています。OpenID Connect 認定を取得済であり、本番運用可能なソリューションとして業界初の Financial-grade API (FAPI) 認定を受けています。

また、OAuth / OIDC の実装を Web API で提供する、というアーキテクチャの採用により、最新仕様の対応のための負荷を最小化します。例えば、PKCE に対応する場合も、クライアントからのリクエストに関連パラメーターを追加するだけで、お客様の実装への変更は不要です。
以下に、Authlete が現在サポートしている仕様を示します(一部仕様は、Enterprise プランでのみご利用いただけます)。
Authlete 独自機能
Authlete は、お客様からの要望を反映し、OAuth 2.0 および OpenID Connect の仕様では言及されていない、独自の機能を実装しています。 以下にそれら独自機能を示します(一部機能は、Enterprise プランでのみご利用いただけます)。詳細なエラーメッセージ
詳細なエラーメッセージ
Authlete API からの応答には、処理結果の結果コードと詳細説明が入っています。
例えば、「[A011308] The host of the redirect URI must be ‘localhost’ when the client’s application type is ‘native’ and the scheme of the redirect URI is ‘http’.」(クライアントのアプリケーションタイプが native でリダイレクト URI のスキームが http の場合、リダイレクト URI のホスト部は localhost でなければならない) といった詳細な内容を返します。
これらメッセージを活用いただくことで、認可サーバー、リソースサーバー、クライアントアプリケーションの開発者は、不具合解消にかかる時間を短縮することができます。
クライアント ID 別名化
クライアント ID 別名化

Authlete の「クライアント ID 別名 (Client ID Alias)」機能を利用することにより、各クライアントは、Authlete が自動的に割り当てるクライアント IDとは別に、任意の値のクライアント ID を持つことができます。
この機能は、「すでに既存に利用している認可サーバーおよびクライアントがあり、そこで用いているクライアント ID をそのまま使いつつ、認可サーバーを移行したい」といった際に役立ちます。
詳細につきましては、こちらをご覧ください。
トークン属性情報
トークン属性情報
Authlete では、アクセストークンまたは認可コードに任意のプロパティ群 (properties) をひもづける機能を持っています。この機能により、認可サーバーはリソースサーバーに対し、API リクエストの可否判定やリクエストの処理内容に必要な情報を提供しやすくなります。
たとえば送金機能をもつ銀行 API において「ABC商店へ5,000円を送金する」といった機能を実現するとしましょう。これを「ABC商店へ5,000円を送金する」というスコープを作って実現しようとすると、送金先および送金額を組み合わせた数のスコープが必要になってしまいます。これは現実的ではありません。
Authlete のスコープ属性機能を用いると、認可サーバーがクライアントに対して発行するアクセストークンに、上記の情報をプロパティとして直接埋め込む、ないしは、上記情報を管理する DB のレコードにひもづけておくことができます。クライアントからアクセストークンを受け取った銀行 API は、そのトークンにひもづいているプロパティから上記の情報を取得し、送金可否の判断が可能となります。
使い方等、詳細はこちらをご参照ください。
クライアント/スコープ単位でのトークンの有効期限制御
クライアント/スコープ単位でのトークンの有効期限制御

Authlete では、クライアント単位またはスコープ単位でアクセストークンまたはリフレッシュトークンの有効期限を短くすることができます。
特定のスコープを持つアクセストークンおよびリフレッシュトークンのみ、その有効期限を短くする場合、スコープの属性機能を活用します。対象とするスコープの属性に、key に access_token.duration または refresh_token.duration、value に 有効期限(秒)を設定いただくことで、サービスで設定されている有効期限より短くすることができます。詳細につきましては、こちらをご覧ください。
また、クライアント単位での制御も可能です。開発者コンソールに管理者権限でログインいただくことで、設定画面の「拡張タブ」より設定変更できます。
リフレッシュトークンの継続利用 ON/OFF
リフレッシュトークンの継続利用 ON/OFF
Authlete では、リフレッシュトークンを用いてアクセストークンを再発行する際に、リフレッシュトークンを「継続利用する」か「継続利用しない」かを選択することが可能です。
「継続利用しない」を選択した場合、アクセストークン再発行時に、リフレッシュトークンも再発行され、有効期間も更新されます。この設定の場合、リフレッシュトークンの有効期限内に定期的にアクセスしてくるエンドユーザー(=リソースオーナー)は再度認証・認可をする必要がなくなり、一方、長期間使わないエンドユーザーは再アクセス時に認証・認可が必要となります。
「継続利用する」を選択した場合、アクセストークン再発行時にリフレッシュトークンを再発行しません。この設定の場合、アクセス頻度によらず、一定期間毎(リフレッシュトークンの有効期限が切れる毎)に、エンドユーザーは再度、認証・認可が必要となります。
PKCE 利用時の暗号化アルゴリズム指定
PKCE 利用時の暗号化アルゴリズム指定
Authlete では、PKCE を利用してトークンを発行する場合、リクエストに対して code_challenge_method=S256 を要求できます。この場合、「code_challenge_method=plan」 または、「code_challenge_method を指定していない」リクエストを拒絶できます。
アクセストークンの単一化
アクセストークンの単一化
ユーザーとクライアントの組みに対して発行するアクセストークンを 1 つに制限することができます。
認可済スコープ管理機能
認可済スコープ管理機能
Authlete では、各ユーザーが認可したスコープを覚えておく機能があり、Authlete の API を使って、認可済みのスコープの一覧を取得したり、削除することができます。
なお、この機能は Enterprise プランでのみご利用いただけます。
tls_client_auth クライアント認証時の PKI チェーン 検証
tls_client_auth クライアント認証時の PKI チェーン 検証
tls_client_auth でクライアント認証する際に、PKI チェーンを Authlete 側でチェックすることができます。
許容時差の変更
許容時差の変更
サーバーとクライアントの間の時刻差の許容秒数を指定することができます。
FAPI-CIBA における binding_message の要求
FAPI-CIBA における binding_message の要求
CIBA のバックチャネル認証リクエストが FAPI リクエストだと判定された際、リクエストに binding_message が含まれていることを要求することができます。
取得 OpenID Connect 認定
Authlete は、複数の OpenID Provider (OP) プロファイルにて認定を受けています。 以下に準拠している OpenID Connect プロトコルのプロファイルの一覧を示します。 OpenID Provider(1.1〜 / 2.1〜)- 1.1〜
- Basic OP
- Implicit OP
- Hybrid OP
- Config OP
- 2.1〜
- Dynamic OP
- Form Post OP
- 2.1〜
- Financial-grade API (FAPI) 1.0 Second Implementer’s Draft
- FAPI R/W OP w/ MTLS
- FAPI R/W OP w/ Private Key
- Financial-grade API (FAPI) 1.0 Second Implementer’s Draft
- 2.2〜
- Financial-grade API (FAPI) 1.0 Final
- FAPI Adv. OP w/ MTLS
- FAPI Adv. OP w/ MTLS, PAR
- FAPI Adv. OP w/ Private Key
- FAPI Adv. OP w/ Private Key, PAR
- FAPI Adv. OP w/ MTLS, JARM
- FAPI Adv. OP w/ Private Key, JARM
- FAPI Adv. OP w/ MTLS, PAR, JARM
- FAPI Adv. OP w/ Private Key, PAR, JARM
- UK Open Banking (Based on FAPI 1 Advanced Final)
- UK-OB Adv. OP w/ MTLS
- UK-OB Adv. OP w/ Private Key
- Australia CDR (Based on FAPI 1 Advanced Final)
- AU-CDR Adv. OP w/ Private Key
- AU-CDR Adv. OP w/ Private Key, PAR
- Brazil Open Banking (Based on FAPI 1 Advanced Final)
- BR-OB Adv. OP w/ MTLS
- BR-OB Adv. OP w/ Private Key
- BR-OB Adv. OP w/ MTLS, PAR
- BR-OB Adv. OP w/ Private Key, PAR
- BR-OB Adv. OP w/ MTLS, JARM
- BR-OB Adv. OP w/ Private Key, JARM
- BR-OB Adv. OP w/ MTLS, PAR, JARM
- BR-OB Adv. OP w/ Private Key, PAR, JARM
- BR-OB Adv. OP DCR
- Financial-grade API (FAPI) 1.0 Second Implementer’s Draft
- FAPI R/W OP w/ MTLS
- FAPI R/W OP w/ MTLS, PAR
- FAPI R/W OP w/ Private Key
- FAPI R/W OP w/ Private Key, PAR
- UK-OB R/W OP w/ MTLS
- UK-OB R/W OP w/ Private Key
- AU-CDR R/W OP w/ Private Key
- AU-CDR R/W OP w/ Private Key, PAR
- Financial-grade API (FAPI) 1.0 Final
- 2.3〜
- Brazil Open Insurance (Based on FAPI 1 Advanced Final)
- BR-OPIN Adv. OP w/ MTLS
- BR-OPIN Adv. OP w/ Private Key
- BR-OPIN Adv. OP w/ MTLS, PAR
- BR-OPIN Adv. OP w/ Private Key, PAR
- BR-OPIN Adv. OP w/ MTLS, JARM
- BR-OPIN Adv. OP w/ Private Key, JARM
- BR-OPIN Adv. OP w/ MTLS, PAR, JARM
- BR-OPIN Adv. OP w/ Private Key, PAR, JARM
- BR-OPIN Adv. OP DCR
- KSA Open Banking (Based on FAPI 1 Advanced Final)
- KSA-OB Adv. OP w/ MTLS, PAR
- KSA-OB Adv. OP w/ Private Key, PAR
- Brazil Open Insurance (Based on FAPI 1 Advanced Final)
- FAPI-CIBA OP Poll w/ MTLS
- FAPI-CIBA OP Poll w/ Private Key
- FAPI-CIBA OP Ping w/ MTLS
- FAPI-CIBA OP Ping w/ Private Key
- FAPI 2.0 Security Profile Second Implementer’s Draft and Message Signing First Implementer’s Draft
- FAPI2SP MTLS + MTLS
- FAPI2SP private key + MTLS
- FAPI2SP OpenID Connect
- FAPI2MS JAR
- FAPI2MS JARM
- Australia FAPI 2.0 ConnectId Implementer’s Draft
- FAPI2MS with ConnectId support