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

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

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

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

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

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

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

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

サードパーティアプリのオンボーディング方法は 2 つ​

  • Logto でアプリを登録する(本ガイド):アプリケーションを作成し、その権限やリダイレクト URI を設定します。パートナーが明確な場合に利用します。
  • ダイナミックアプリ:事前登録なしでクライアントが接続でき、自身のメタデータドキュメントの公開 HTTPS URL をクライアント ID として利用します。MCP クライアントや AI エージェントなど、どんなクライアントでも接続する可能性がある場合に利用します。

両方を同時に利用することも可能です。

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

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

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

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

統合ガイド​

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

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

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

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

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

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

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

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

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

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

主な手順:

  1. 認可開始:client_id、redirect_uri、response_type=code、scope を指定して Logto の認可エンドポイントへリダイレクトします。
  2. コールバック処理:リダイレクトから認可 code を受け取ります。
  3. トークン交換:バックエンドからトークンエンドポイントへ code、client_id、client_secret を POST します。

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

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

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

注記:

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

デバイスフロー クイックスタート で実装の詳細を確認できます。

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

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

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

consent screen

次のステップ​

よくある質問​

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

管理方法:

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

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

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