概説

Authlete とは?

Authlete は OAuth 2.0 および OpenID Connect を実装するための BaaS(Backend as a Service) ツールです。

Authlete が提供する標準実装 又は Web API を使うことで、簡単に OAuth 2.0 および OpenID Connect の機能を簡単に実現できます。

OAuth 2.0 & OpenID Connect とは?

OAuth 2.0 は、ユーザーの同意の元、サードパーティーアプリがあるサービスのユーザーデータに、アクセスすることを許可する仕組みです。このフレームワークを使うことで、ユーザーは、サードパーティーアプリに対してサービスの ID やパスワードを共有することなく、情報へのアクセスを許可できます。

主な仕様は、RFC 6749 にて定義されています。 .

OAuth 2.0

OpenID Connect は、OAuth 2.0 の上に策定されたフレームワークであり、このフレームワークを使うことでサードパーティーアプリは、OpenID プロバイダーによって管理されているユーザのアイデンティティ情報を取得することが可能となります。

主な仕様は、OpenID Connect Core 1.0 にて定義されています。 The main specification is defined in .

OpenID Connect

なぜ Authlete が必要なのか?

サービスの Web API を実装する場合、サービスを提供する側は、OAuth 2.0(及び OpenID Connect)を実装すること必要となります。しかしながら、その実装には容易ではなく、多くの時間が必要です。また、個人データを管理すること自体、非常に慎重を要する作業です。限られた社内外のエンジニアのリソースを使い、これら課題を解決しつつ、競合よりも先にサービス提供することは、非常に大変です。

Authlete を使うことで、上記課題を解決できます。Authlete は多量に存在する関連仕様をすべてサポートしています。Authlete を使うことで比較的容易に、Web API を実装することが可能となります。

Authlete の仕組み

Authlete はサービスのバックエンドとして機能します。そのため、基本的に、エンドユーザーやアプリ開発者が直接 Authlete にアクセスすることはありません。OAuth 2.0 を例にとると、下図のようなアーキテクチャになります。

authlete's role in authorization

Authlete の役割

Web API を実装する場合、4つの構成要素を念頭に置きましょう。下記の4つは、各構成要素と、それらにおける Authlete の役割を示しています。

認証(Authentication)

認証は、「誰か」に関する情報を取り扱います。 OpenID Connect は認証に関する仕様です。


Web API 実装者の役割

Web API 実装者は、エンドユーザーのアカウントを管理するとともに、各エンドユーザーを認証します。Authlete を使う場合、Authleteへ各ユーザーの一意識別子(subject)を手渡す必要があります。


Authlete の役割

Authlete はユーザーの一意識別子を受け取り、トークンやその他の情報と紐づけます。Authlete はエンドユーザーのアカウントを管理せず、また、どのようにユーザーを認証したのか、についても問いません。ID とパスワードで認証してもよいですし、指紋認証、交際認証など、好きな認証方式をお使いいただけます。

認可(Authorization)

認可 は、「誰が誰に何の権限を与えたのか」に関する情報を取り扱います。 OAuth 2.0 は、認可に関する業界標準の仕様です。


Web API 実装者の役割

Authlete へ認可サーバーおよび OpenID プロバイダーに関するメタデータを登録します。登録には、サービス管理者コンソールをご利用いただけます。


Authlete の役割

Authlete は認可のためのソリューションです! Authlete は、アクセストークン、リフレッシュトークン、認可コード、認可サーバーおよびクライアントのメタデータなどを管理します。Authlete を使う場合、これら情報を管理するためのデータベースは不要となります。

リソース管理

リソース管理は、サードパーティーアプリにアクセスさせるリソース(=データ)を扱います。


Web API 実装者の役割

リソースサーバーをホストし、サードパーティーアプリにアクセスさせるための Web API を実装します。この Web API のことを、protected resource endpoints と言います。


Authlete の役割

Authlete は、アクセストークンを発行し、管理します。加えて、アクセストークンの情報を提供する イントロスペクション API を用意しているため、クライアントアプリがリソースにアクセスした際に役立ちます。

クライアント管理

クライアント管理は、クライアントアプリを取り扱います。開発者は、アプリのメタデータを登録します。


Web API 実装者の役割

クライアントアプリの開発者を認証し、アカウントを管理する必要があります。Authlete を使う際には、各開発者の一意識別子を必要に応じて Authlete に手渡します。


Authlete の役割

Authlete は、Client ID を発行し、クライアントアプリのメタデータを管理します。管理には、開発者コンソール をお使いいただけますし、また、Authlete の Web API を使って独自のコンソール画面をお作りいただくことも可能です。

Authlete は OpenID Connect をサポートしていますが、エンドユーザーの認証自体はお客様に実装いただく必要があります。Authlete がサポートする OpenID Connect の機能を使って、OpenID Connect authentication requests のパラメーターを検証し、ID tokens を生成することができます。

Authlete は、認証と認可を分離したアーキテクチャーを採用しています。そのため、エンドユーザーの認証機能をもつ既存のシステムに対しても、Authlete を使うことで、OAuth 2.0 と OpenID Connect の機能を追加することができます。

Authlete がサポートする仕様群

Authlete は、RFC6749 をはじめ、様々な仕様をサポートしています。OpenID Connect 認定を取得済であり、また、本番運用可能なソリューションとして業界初の Financial-grade API (FAPI) 認定を受けています。

以下に、Authlete が現在サポートしている仕様を示します(一部仕様は、Enterprise プランでのみご利用いただけます)。

Authlete は、複数の OpenID Provider (OP) プロファイルにて認定を受けています。 以下に準拠している OpenID Connect プロトコルのプロファイルの一覧を示します。

  • Basic OP Profile
  • Implicit OP Profile
  • Hybrid OP Profile
  • Config OP Profile
  • Dynamic OP Profile
  • Form Post OP Profile
  • FAPI (Financial-grade API) R/W OP w/ MTLS
  • FAPI (Financial-grade API) R/W OP w/ Private Key

Authlete 独自機能

Authlete は、お客様からの要望を反映し、上記仕様では言及されていない、独自の機能を実装しています。

以下にそれら独自機能を示します(一部機能は、Enterprise プランでのみご利用いただけます)。

  • ClientID Alias:各クライアントは、Authlete が割り当てるクライアント ID とは別に、任意のクライアント ID を持つことができます。
  • Extra Properties:トークンに、任意のキー・バリューを紐づけることができます。
  • Scope Attributes:スコープに、任意のキー・バリューを紐づけることができます。
  • Refresh Token Kept:リフレッシュトークン利用時、リフレッシュトークンの有効期限を更新するかどうかを選択することができます。
  • Requestable Scopes:クライアント毎に要求可能なスコープを制限することができます。
  • Single Access Token Per Subject:ユーザーとクライアントの組みに対して発行するアクセストークンを 1 つに制限することができます。
  • error_description Omission:エラー応に error_description を含めるかどうがを選択することができます。
  • error_uri Omission:エラー応答に error_uri を含めるかどうがを選択することができます。
  • Granted Scopes Management:認可済みのスコープの一覧を取得したり、削除することができます。
  • PKI Certificate Chain Validation for Mutual TLS Authentication:tls_client_auth でクライアント認証する際に、PKI チェーンを Authlete 側でチェックすることができます。
  • S256 for Code Challenge Method:code_challenge_method を使う際は S256 のみを有効にすることができます。
  • JWT-based Access Token:Authlete が通常発行するアクセストークンはそれ自体に意味のない文字列ですが、JWT 形式のアクセストークンも発行することができます。
  • Allowable Clock Skew:サーバーとクライアントの間の時刻差の許容秒数を指定することができます。
  • Binding Message in FAPI Context:CIBA のバックチャネル認証リクエストが FAPI リクエストだと判定された際、リクエストに binding_message が含まれていることを要求することができます。

まとめ

Authlete を使うことで、OAuth 2.0 および OpenID Connect に準拠したウェブサービスを構築できます。Authlete を試してみるには、次にクイックガイドを見てみましょう。