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

サードパーティアプリ (OAuth / OIDC)

Logto のサードパーティアプリケーション統合を利用すると、Logto を外部アプリケーションの アイデンティティプロバイダー (IdP) として活用できます。

アイデンティティプロバイダー (IdP) とは、ユーザーのアイデンティティを検証し、ログイン認証情報を管理するサービスです。ユーザーのアイデンティティを確認した後、IdP は認証トークンやアサーションを生成し、ユーザーが再度ログインすることなくさまざまなアプリケーションやサービスにアクセスできるようにします。

アプリケーションへの Logto 統合 ガイドで作成したアプリケーションが自分で開発・完全に管理できるものだったのに対し、サードパーティアプリケーションは外部の開発者やビジネスパートナーによって開発された独立したサービスです。

この統合アプローチは、一般的なビジネスシナリオに最適です。Logto アカウントを使ってパートナーアプリケーションにアクセスできるようにしたり、エンタープライズユーザーが Google Workspace で Slack にサインインするような体験を提供できます。また、サードパーティアプリケーションが「Logto でサインイン」機能を追加できるオープンプラットフォームを構築することも可能です(「Google でサインイン」と同様)。

Logto は OpenID Connect (OIDC) プロトコルに基づくアイデンティティサービスであり、認証 (Authentication)認可 (Authorization) の両方の機能を提供します。これにより、OIDC サードパーティアプリの統合は従来のウェブアプリケーションと同じくらい簡単です。

また、OIDC は OAuth 2.0 の上に認証レイヤーを追加して構築されているため、OAuth プロトコルを使ったサードパーティアプリの統合も可能です。

Logto でサードパーティアプリケーションを作成する

  1. コンソール > アプリケーション に移動します。
  2. 「アプリケーションを作成」ボタンをクリックし、「サードパーティアプリ」をアプリケーションタイプとして選択し、次のいずれかの統合プロトコルを選びます:
    • OIDC / OAuth
  3. サードパーティアプリケーションのタイプに応じてアプリケーションタイプを選択します:
    • 従来型ウェブ:バックエンドでクライアントシークレットを安全に保存できるサーバーレンダリングアプリケーション(例:Node.js、PHP、Java)。
    • シングルページアプリ (SPA):完全にブラウザ上で動作し、シークレットを安全に保存できないクライアントサイドレンダリングアプリケーション(例:React、Vue、Angular)。
    • ネイティブ:ユーザーデバイス上で動作するモバイルまたはデスクトップアプリケーション(例:iOS、Android、Electron)。
  4. アプリケーションの名前と説明を入力し、「作成」ボタンをクリックします。新しいサードパーティアプリケーションが作成されます。

作成したサードパーティアプリケーションはすべて、「アプリケーション」ページの「サードパーティアプリ」タブに一覧表示されます。この構成により、自分のアプリケーションと区別しやすくなり、すべてのアプリケーションを一元管理できます。

サードパーティアプリケーションにサインインできるユーザーを制限したい場合は、アプリケーションの ルール タブで アプリレベルのアクセス制御 を設定してください。

統合ガイド

アプリケーション設定情報の確認

アプリケーション詳細ページで、統合に必要な クライアント IDクライアントシークレット(従来型ウェブアプリのみ)、および OIDC エンドポイントを確認できます。

サードパーティサービスが OIDC ディスカバリーに対応している場合は、ディスカバリーエンドポイント を提供するだけで済みます。対応していない場合は、エンドポイントの詳細を表示 をクリックして、認可エンドポイントトークンエンドポイント などすべてのエンドポイントを確認してください。

サードパーティ IdP 対応サービスとの統合

外部アイデンティティプロバイダーの設定にネイティブ対応しているサービスや製品(例:エンタープライズ SaaS プラットフォーム、コラボレーションツール)と接続する場合、設定は簡単です:

  1. サービスの IdP または SSO 設定ページを開きます。
  2. Logto から クライアント ID(必要に応じて クライアントシークレット も)をコピーし、サービスの設定に貼り付けます。
  3. サービスが OIDC 自動ディスカバリーに対応していれば ディスカバリーエンドポイント を、対応していなければ 認可エンドポイントトークンエンドポイント を手動でコピーします。
  4. サービスの設定ページから リダイレクト URI をコピーし、Logto アプリケーションの許可リダイレクト URI に追加します。
  5. サービスが許可していれば スコープ を設定します。Logto は OIDC プロバイダーなので、ユーザー認証が必要な場合は openid スコープを含めてください(ID トークンや UserInfo エンドポイントへのアクセスが可能になります)。OAuth リソースアクセスのみ必要な場合は openid スコープは任意です。

設定が完了すると、サービス側で OAuth / OIDC フローが自動的に処理されます。

OAuth / OIDC プロトコルによる統合

サードパーティアプリケーションがプログラム的に Logto を IdP として統合する場合、標準の 認可コードフロー を実装する必要があります。実装には、各プログラミング言語向けの OAuth 2.0 / OIDC クライアントライブラリの利用を推奨します。

従来型ウェブアプリケーションは、クライアントシークレットをバックエンドサーバーで安全に保存できる 機密クライアント です。実装の詳細は 認可コードフロー を参照してください。

主な手順:

  1. 認可の開始client_idredirect_uriresponse_type=codescope を付与して Logto の認可エンドポイントにユーザーをリダイレクトします。
  2. コールバックの処理:リダイレクトから認可 code を受け取ります。
  3. トークンの交換:バックエンドから、code・client_idclient_secret をトークンエンドポイントに POST します。

デバイスフローによる統合

入力が制限されたデバイス(例:スマートテレビ、ゲーム機、CLI ツール)上で動作するネイティブサードパーティアプリケーションの場合、標準のリダイレクトベースの認可コードフローは現実的でない場合があります。その場合は、OAuth 2.0 デバイス認可グラント を利用できます。

デバイスフローでは、デバイスがユーザーコードと検証用 URL を表示します。ユーザーは別のデバイス(スマートフォンやノートパソコンなど)でその URL にアクセスし、コードを入力して認証を完了します。デバイスは認可が完了するまで Logto のトークンエンドポイントをポーリングします。

注記:

デバイスフローを実装する前に、Logto コンソールでサードパーティアプリケーションに必要な 権限 を設定してください。有効化されていないスコープをリクエストした場合、サードパーティアプリはアクセスを拒否されます。

実装の詳細は デバイスフロー クイックスタート を参照してください。

セキュリティ上の理由から、すべての OIDC サードパーティアプリケーションは Logto による認証 (Authentication) 後、ユーザー認可のために 同意画面 にリダイレクトされます。

サードパーティがリクエストした ユーザープロファイル権限API リソーススコープ組織権限、および組織メンバーシップ情報はすべて同意画面に表示されます。

これらのリクエストされた権限は、ユーザーが「認可」ボタンをクリックした後にのみサードパーティアプリケーションに付与されます。

consent screen

次のステップ

よくある質問

Logto ではロールベースのアクセス制御 (RBAC) を使ってユーザー権限を管理しています。同意画面には、ユーザーにすでに割り当てられているスコープ(権限)のみが表示されます。ユーザーが持っていないスコープをサードパーティアプリがリクエストしても、それらは除外され、誤った同意を防ぎます。

管理方法:

  • 特定のスコープを持つ グローバルロール または 組織ロール を定義します。
  • アクセス要件に応じてユーザーにロールを割り当てます。
  • ユーザーはロールから自動的にスコープを継承します。

ユースケース:Apache Answer を統合してユーザー向けコミュニティを立ち上げる

Logto をサードパーティアイデンティティプロバイダー (IdP) として利用する