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

サードパーティアプリ (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 プロトコルを使ったサードパーティアプリの統合も可能です。

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_idredirect_uriresponse_type=codescope を付与して Logto の認可エンドポイントにリダイレクトします。
  2. コールバック処理:リダイレクトから認可 code を受け取ります。
  3. トークン交換:バックエンドからトークンエンドポイントに code、client_idclient_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) として利用する