> ## Documentation Index
> Fetch the complete documentation index at: https://developers.authlete.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 実装すべきもの

> このドキュメントでは、OAuth や OpenID Connect のエコシステムを構築するために、何を実装しないといけないのか、簡単に説明しています。

# OAuth 2.0 エンドポイント

[OAuth 2.0][6749] を実装し、[アクセストークン][6749_5]を発行するためには、２つのエンドポイントを実装しなければなりません。一つは、[認可エンドポイント][6749_31]であり、もう一方は、[トークンエンドポイント][6749_32]です。これらエンドポイントのことを、**Oauth 2.0 エンドポイント**と呼びます。OAuth2.0 の仕様である RFC6749 では、これら２つのエンドポイントがどのように振る舞うべきか、述べられています。

さらに、[OpenID Connect][oidc] を実装することにより、上記２つのエンドポイントを拡張し、[ID トークン][idtoken]を発行することができます。詳細な要件については、[OpenID Connect Core 1.0][core] にて言及されています。

これら仕様書上には、その他のエンドポイントも定義されていますが、実装するかどうかは任意です。OAuth 2.0 及び OpenID Connect を最低限機能させるためには、上記の認可エンドポイントとトークンエンドポイントがあれば十分です。また、[RFC 6749][6749] で定義されている認可タイプ（grant type）の一部をサポートしない場合、認可エンドポイントないしはトークンエンドポイントのどちらか一方の実装のみで十分場合があります。例えば、[インプリシットフロー][6749_42]のみをサポートする場合、認可エンドポイントだけあれば十分です。

Authlete は、OAuth 2.0 等で定義されているエンドポイントを簡単に実装するための機能を [Web API][api] として定義し、提供しています。

# クライアントアプリ管理

OAuth 2.0 の仕組みを使う以上、クライアントアプリの管理が必要不可欠です。設計によっては、あるサービスは各エンドユーザーをそれぞれ開発者と定義し、彼らにクライアントアプリの開発・登録を許可することになります。

Authlete は、クライアントアプリを管理（登録、削除、参照、更新）するための [Web API][api] を提供しています。直接、それらの Web API を使ってもいいですし、呼ぶためのツールを開発することもできます。もっとも簡単な方法は、Authlete が提供する **[開発者コンソール][cd_console]** を使うことである。クライアントアプリの開発者は、開発者コンソールを使って、クライアントアプリのメタ情報を管理できます。

# 保護リソースエンドポイント

ウェブサービスを提供する場合、Web API を通して、クライアントアプリへエンドユーザーの情報を渡すことになります。このような API を、\*\*保護リソースエンドポイント（Protected Resource Endpoint）\*\*と呼びます。

クライアントアプリは、認可サーバーから発行されたアクセストークンをつかって、これら保護リソースエンドポイントにアクセスします。保護リソースエンドポイントでは、クライアントアプリが提示したアクセストークンを検証し、そのクライアントアプリが保護されたリソースへのアクセス権限を持っているのか、確認しなければなりません。

アクセストークンの情報を取得するための API のことをイントロスペクション API といい、2015年にリリースされた [RFC 7662][7662] に定義されています。保護リソースエンドポイントの実装には、これら API を使うことになります。

Authlete では、この仕様と異なる、より便利な [Web API][api_intro] も提供しています。

[oidc]: https://openid.net/connect/

[core]: https://openid.net/specs/openid-connect-core-1_0.html

[idtoken]: https://openid.net/specs/openid-connect-core-1_0.html#IDToken

[6749]: https://tools.ietf.org/html/rfc6749

[6749_31]: https://tools.ietf.org/html/rfc6749#section-3.1

[6749_32]: https://tools.ietf.org/html/rfc6749#section-3.2

[6749_42]: https://tools.ietf.org/html/rfc6749#section-4.2

[6749_5]: http://tools.ietf.org/html/rfc6749#section5

[7662]: https://tools/ietf.org/html/rfc7662

[cd_console]: /ja/developers/cd_console

[so_console]: /ja/developers/so_console

[api]: https://docs.authlete.com

[api_intro]: https://docs.authlete.com/#introspection
