認可サーバー実装 (Deno)
概要
OAuth 2.0 と OpenID Connect をサポートする認可サーバーの Deno による実装です。
この実装は Fen フレームワークと authlete-deno-library を用いて書かれています。
ライセンス
Apache License, Version 2.0
ソースコード
https://github.com/authlete/deno-fen-oauth-server
Authlete について
Authlete (オースリート) は、OAuth 2.0 & OpenID Connect の実装をクラウドで提供するサービスです (概説)。 Authlete が提供するデフォルト実装を使うことにより、もしくはこの実装 (gin-oauth-server) でおこなっているように Authlete Web API を用いて認可サーバーを自分で実装することにより、OAuth 2.0 と OpenID Connect の機能を簡単に実現できます。
この認可サーバーの実装を使うには、Authlete から API
クレデンシャルズを取得し、authlete.json
に設定する必要があります。
API クレデンシャルズを取得する手順はとても簡単です。
単にアカウントを登録するだけで済みます (サインアップ)。
詳細はクイックガイドを参照してください。
実行方法
この認可サーバーの実装をダウンロードします。
$ git clone https://github.com/authlete/deno-fen-oauth-server.git $ cd deno-fen-oauth-server
設定ファイルを編集して API クレデンシャルズをセットします。
$ vi authlete.json
http://localhost:1902
で認可サーバーを起動します。$ deno run --allow-net --allow-read --config tsconfig.json src/server.ts
エンドポイント
この実装は、下表に示すエンドポイントを公開します。
エンドポイント | パス |
---|---|
認可エンドポイント | /api/authorization |
トークンエンドポイント | /api/token |
JWK Set エンドポイント | /api/jwks |
設定エンドポイント | /.well-known/openid-configuration |
取り消しエンドポイント | /api/revocation |
イントロスペクションエンドポイント | /api/introspection |
認可エンドポイントとトークンエンドポイントは、RFC 6749、OpenID Connect Core 1.0、 OAuth 2.0 Multiple Response Type Encoding Practices、 RFC 7636 (PKCE)、その他の仕様で説明されているパラメーター群を受け付けます。
JWK Set エンドポイントは、クライアントアプリケーションが (1) この OpenID プロバイダーによる署名を検証できるようにするため、また (2) この OpenID へのリクエストを暗号化できるようにするため、JSON Web Key Set ドキュメント (JWK Set) を公開します。
設定エンドポイントは、この OpenID プロバイダーの設定情報を OpenID Connect Discovery 1.0 で定義されている JSON フォーマットで公開します。
取り消しエンドポイントはアクセストークンやリフレッシュトークンを取り消すための Web API です。 その動作は RFC 7009 で定義されています。
イントロスペクションエンドポイントはアクセストークンやリフレッシュトークンの情報を取得するための Web API です。 その動作は RFC 7662 で定義されています。
認可リクエストの例
次の例は Implicit フローを用いて認可エンドポイントからアクセストークンを取得する例です。
{クライアントID}
となっているところは、あなたのクライアントアプリケーションの実際のクライアント
ID で置き換えてください。クライアントアプリケーションについては、クイックガイド
および開発者コンソールのドキュメントを参照してください。
http://localhost:1902/api/authorization?client_id={クライアントID}&response_type=token
上記のリクエストにより、認可ページが表示されます。
認可ページでは、ログイン情報の入力と、”Authorize” ボタン (認可ボタン) もしくは “Deny” ボタン
(拒否ボタン) の押下が求められます。ユーザーデータベースのダミー実装 (src/db/user_dao.ts
)
は以下のアカウントを含んでいます。いずれかを使用してください。
Login ID | Password |
---|---|
john | john |
jane | jane |
max | max |
その他の情報
- Authlete - Authlete ホームページ
- authlete-deno - Deno 用 Authlete ライブラリ
コンタクト
コンタクトフォーム : https://www.authlete.com/ja/contact/
目的 | メールアドレス |
---|---|
一般 | info@authlete.com |
営業 | sales@authlete.com |
広報 | pr@authlete.com |
技術 | support@authlete.com |