メインコンテンツまでスキップ

OAuth 2.0 プロトコルを使用してソーシャルログインを設定する

OAuth 2.0 プロトコル用の公式 Logto コネクター。

ヒント:

このガイドでは、Logto コネクターに関する基本的な知識を持っていることを前提としています。もし持っていない場合は、コネクターの設定 ガイドを参照して始めてください。

はじめに

OAuth コネクターは、OAuth 2.0 プロトコルをサポートする任意のソーシャルアイデンティティプロバイダーへの Logto の接続を可能にします。

ℹ️ 注意

OAuth コネクターは Logto の特別な種類のコネクターであり、いくつかの OAuth プロトコルベースのコネクターを追加できます。

OAuth アプリを作成する

このページを開いたとき、接続したいソーシャルアイデンティティプロバイダーがすでにわかっていると考えています。最初に行うべきことは、アイデンティティプロバイダーが OAuth プロトコルをサポートしていることを確認することです。これは、有効なコネクターを設定するための前提条件です。その後、アイデンティティプロバイダーの指示に従って、OAuth 認可 (Authorization) 用の関連アプリを登録および作成します。

コネクターを設定する

セキュリティ上の考慮から、「Authorization Code」グラントタイプのみをサポートしており、Logto のシナリオに完全に適合します。

clientIdclientSecret は、OAuth アプリの詳細ページで見つけることができます。

clientId: クライアント ID は、認可 (Authorization) サーバーへの登録時にクライアントアプリケーションを識別する一意の識別子です。この ID は、認可 (Authorization) サーバーがクライアントアプリケーションのアイデンティティを確認し、特定のクライアントアプリケーションに関連付けられた認可 (Authorization) アクセストークンを関連付けるために使用されます。

clientSecret: クライアントシークレットは、登録時に認可 (Authorization) サーバーからクライアントアプリケーションに発行される機密キーです。クライアントアプリケーションは、このシークレットキーを使用して、アクセストークンを要求する際に認可 (Authorization) サーバーに対して自分自身を認証します。クライアントシークレットは機密情報と見なされ、常に安全に保たれるべきです。

tokenEndpointAuthMethod: トークンエンドポイント認証 (Authentication) 方法は、クライアントアプリケーションがアクセストークンを要求する際に認可 (Authorization) サーバーに対して自分自身を認証するために使用されます。サポートされている方法を確認するには、OAuth 2.0 サービスプロバイダーの OpenID Connect ディスカバリエンドポイントで利用可能な token_endpoint_auth_methods_supported フィールドを参照するか、OAuth 2.0 サービスプロバイダーが提供する関連ドキュメントを参照してください。

clientSecretJwtSigningAlgorithm (オプション): tokenEndpointAuthMethodclient_secret_jwt の場合にのみ必要です。クライアントシークレット JWT 署名アルゴリズムは、トークンリクエスト中に認可 (Authorization) サーバーに送信される JWT をクライアントアプリケーションが署名するために使用されます。

scope: スコープパラメータは、クライアントアプリケーションがアクセスを要求しているリソースと権限のセットを指定するために使用されます。スコープパラメータは通常、特定の権限を表す値のスペースで区切られたリストとして定義されます。たとえば、スコープ値が "read write" の場合、クライアントアプリケーションがユーザーのデータへの読み取りおよび書き込みアクセスを要求していることを示すかもしれません。

ソーシャルベンダーのドキュメントで authorizationEndpointtokenEndpoint、および userInfoEndpoint を見つけることが期待されます。

authenticationEndpoint: このエンドポイントは、認証 (Authentication) プロセスを開始するために使用されます。認証 (Authentication) プロセスには通常、ユーザーがログインし、クライアントアプリケーションがリソースにアクセスするための認可 (Authorization) を与えることが含まれます。

tokenEndpoint: このエンドポイントは、クライアントアプリケーションが要求されたリソースにアクセスするために使用できるアクセストークンを取得するために使用されます。クライアントアプリケーションは通常、アクセストークンを受け取るためにグラントタイプと認可 (Authorization) コードを含むリクエストをトークンエンドポイントに送信します。

userInfoEndpoint: このエンドポイントは、クライアントアプリケーションがユーザーのフルネーム、メールアドレス、またはプロフィール写真などの追加情報を取得するために使用されます。ユーザー情報エンドポイントは通常、クライアントアプリケーションがトークンエンドポイントからアクセストークンを取得した後にアクセスされます。

Logto はまた、ユーザーが通常標準でないソーシャルベンダーのプロファイルからのマッピングをカスタマイズできる profileMap フィールドを提供しています。キーは Logto の標準ユーザープロファイルフィールド名であり、対応する値はソーシャルプロファイルのフィールド名であるべきです。現在の段階では、Logto はソーシャルプロファイルから 'id'、'name'、'avatar'、'email'、および 'phone' のみを考慮し、'id' のみが必須で、他はオプションフィールドです。

responseTypegrantType は、認可 (Authorization) コードグラントタイプでのみ固定値にできるため、オプションとし、デフォルト値が自動的に入力されます。

たとえば、Google ユーザープロファイルのレスポンス を見つけることができ、そのため profileMap は次のようになります:

{
"id": "sub",
"avatar": "picture"
}

ℹ️ 注意

カスタマイズパラメータを配置するためのオプションの customConfig キーを提供しています。 各ソーシャルアイデンティティプロバイダーは、OAuth 標準プロトコルに独自のバリエーションを持つことがあります。希望するソーシャルアイデンティティプロバイダーが OAuth 標準プロトコルに厳密に従っている場合、customConfig を気にする必要はありません。

設定タイプ

名前タイプ必須
authorizationEndpointstringtrue
userInfoEndpointstringtrue
clientIdstringtrue
clientSecretstringtrue
tokenEndpointResponseTypeenumfalse
responseTypestringfalse
grantTypestringfalse
tokenEndpointstringfalse
scopestringfalse
customConfigRecord<string, string>false
profileMapProfileMapfalse
ProfileMap フィールドタイプ必須デフォルト値
idstringfalseid
namestringfalsename
avatarstringfalseavatar
emailstringfalseemail
phonestringfalsephone

参考文献