Authlete の「クライアント ID 別名 (Client ID Alias)」機能を利用すると、各クライアントに対し、自動生成された値とは別のクライアント ID を割り当てることが可能です。既存の認可システムを Authlete に移行する際の、クライアントやリソースサーバーの改修の最小化に有用です。
Authlete におけるクライアント ID
Authlete では、クライアントの「クライアント ID (client_id)」の値は、Authlete がランダムな数値を自動生成し、クライアント情報として登録します。そしてクライアントはその値(以下「新 ID」)を、認可サーバーへのリクエストパラメーターのひとつとして用いることになります。
一方、たとえば既存の認可サーバーがあり、クライアント ID の値(以下「旧 ID」)が登録済みである環境では、認可サーバーをAuthlete ベースに移行する際、クライアント側でも「旧 ID」から「新 ID」への入れ替えが必要となります。この作業は、クライアント数や種類によっては煩雑となるかもしれません。
前述の課題を解決するのが「クライアント ID 別名 (Client ID Alias)」機能です。同機能を有効化すると、クライアントに対し、任意の文字列から成る「旧 ID」を、自動生成された「新 ID」とは別に割り当てられるようになります。
「クライアント ID 別名」機能は、クライアントからは透過的に動作します。クライアントは、認可リクエストやトークンリクエストの client_id リクエストパラメーター、あるいはトークンリクエストの Authorization ヘッダーに埋め込む値など、クライアント ID を用いるさまざまな場面で、「旧 ID」をそのまま使用できます。
「基本情報」タブの「Client ID の別名有効化」にて、「有効」を選択します。また同じく「Client ID の別名」にて、クライアント ID の別名として割り当てる値を入力します。 image.png69.52 KB
実行例
認可リクエスト
以下は、本来のクライアント ID (1720...) ではなく、クライアント ID 別名 ("clientapp01") を含む認可リクエストを、curl を用いて Authlete の /auth/authorization API に送信する例です。Authlete が、クライアントの指定したクライアント ID 別名を受け入れ、リクエストを処理したことがわかります。(読みやすさのために一部折り返しています)
{
"type": "authorizationResponse",
"resultCode": "A004001",
"resultMessage":
"[A004001] Authlete has successfully issued a ticket
to the service (API Key = 1415...) for the
authorization request from the client (ID = 1720...).
[response_type=code, openid=false]",
"action": "INTERACTION",
"client": {
"clientId": 1720...,
"clientIdAlias": "clientapp01",
"clientIdAliasEnabled": true,
...
トークンリクエスト
以下は、本来のクライアント ID (1720...) ではなく、クライアント ID 別名 ("clientapp01") を Authorization ヘッダーに含むトークンリクエストを、curl を用いて Authlete の /auth/token API に送信する例です。(読みやすさのために一部折り返しています)