シンプルなクライアントサイドOIDC SDKを実装する
Logtoは、さまざまなプラットフォーム向けの多種多様なSDKを提供しています。 公式のSDKを使用するだけでなく、コミュニティの開発者が自分自身で使いやすいSDKを開発することを推奨しています。この記事では、OIDC用の基本的なクライアントサイドSDKの構築方法を説明します。
導入
Logtoは、開発者やビジネスグループに包括的なCustomer Identity and Access Management (CIAM)ソリューションを提供しています。 さまざまなプラットフォームやアプリケーションフレームワークに対応した幅広いすぐに使用できるSDKを提供しています。 Logtoクラウドサービスと組み合わせて、数分であなたのアプリケーションに対するユーザー認可フローを非常に安全に確立することができます。 開発者コミュニティから生まれた企業であるLogtoは、コミュニティ参加を重視し、価値を見いだしています。 公式に開発されたLogto SDKに加えて、コミュニティの開発者がさらに多様で使いやすいSDKを作り出すことで専門知識を貢献することを、我々は常に奨励し、歓迎しています。 これにより、さまざまなプラットフォームやフレームワークの独特のニーズを満たすことができます。 本記事では、OIDC標準認証SDKの実装方法を手順を追って簡単に紹介します。
コンテキスト
OpenID Connect (OIDC)フローは、OAuth 2.0フレームワークを基礎とした認証プロトコルで、IDの確認と一元サインオンの機能を提供します。 それにより、ユーザーはアプリケーションで自身を認証し、プライベートリソースへの更なるアクセスを安全に許可されます。 詳細はOIDC仕様を参照してください。
ワークフロー
標準の認可コードフローには以下のステップが含まれます:
Authentication flow
- ユーザーがサインインリクエストを初期化します: 匿名のユーザーがパブリックエントランスからあなたのアプリケーションに来ます。 対象は認証を受け、さらにサードパーティのアプリケーションやサービス上の保護されたリソースへのアクセスをリクエストすることができます。
- ユーザー認証: クライアントアプリは認証URIを生成し、認証サーバーにリクエストを送信します。 これにより、ユーザーがそのサインインページにリダイレクトされます。 ユーザーはさまざまなサインイン方法を使用してサインインページと対話し、認証サーバーによって認証されます。
- サインインコールバックの処理: 認証が成功すると、ユーザーは認証ステータスとリクエストされた認可データにリンクした関連する許可を含む
authorization_code
が付与された状態でアプリケーションにリダイレクトされます。 - トークン交換: 上記のリダイレクトアドレスから抽出された
authorization_code
を使用してトークン交換をリクエストします。 返信として以下の内容が得られます:id_token
:認証済みユーザーに関するID情報を含むデジタル署名付きJWT。access_token
:ユーザーの基本情報エンドポイントにアクセスするために使用できる不透明なaccess_token
。refresh_token
:ユーザーがaccess_token
と連続的な交換を維持することを許可する資格トークン。
Authorization flow
- ユーザー情報の取得: アプリケーションは初期トークン交換フローから得られた不透明な
access_token
を利用してUserInfoエンドポイントへの追加のリクエストを実施することで、ユーザー情報の詳細を取得できます。 これにより、ユーザーの電子メールアドレスやプロフィール画像などの詳しい情報を取得することが可能になります。 - 保護されたリソースへのアクセス権を付与する: 必要に応じて、アプリケーションは
refresh_token
とresource
とscope
パラメータを組み合わせてトークン交換エンドポイントへの追加のリクエストを実行し、ユーザーが目的のリソースにアクセスするための独自のaccess_token
を取得することができます。 このプロセスは、保護されたリソースにアクセスするための必要な認可情報を含むJWTフォーマットのaccess_token
を発行する結果となります。
実装
私たちは@logto/client JavaScript SDKの中のいくつかの設計戦略に従って、あなた自身のクライアントアプリケーションのためのシンプルなSDKを実装するプロセスを示します。 あなたが使用しているクライアントフレームワークによって、詳細なコード構造が異なるかもしれないことを覚えておいてください。 自分自身のSDKプロジェクトの例として、任意のLogto公式SDKを選択して自由に使用してください。