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

サードパーティ AI エージェントによるアプリへのアクセスを有効化

ヒント:

Logto の AI ソリューション をご覧ください:MCP サーバー、AI エージェント、およびアプリ向けの認証 (Authentication) と認可 (Authorization)。

このガイドでは、Logto をサービスと統合し、AI エージェントがサービスへアクセスできるようにする手順を説明します。

学べる内容:

  • サービスの認可 (Authorization) サーバーとして Logto を設定する方法
  • AI エージェントがサービスへアクセスするためのアクセス トークン (Access token) を取得する方法
  • AI エージェントを使ってフローをテストする方法

サードパーティ AI エージェントと自分の AI エージェント(またはアプリ)の違い

例を見てみましょう。あなたが天気データを提供するサービスの開発者だとします。

公式天気アプリ(自分の AI エージェント / アプリ)

  • ユーザーが天気を確認できる公式天気アプリを提供します。
  • 仕組み:公式天気アプリは Logto を使ってユーザーを認証 (Authentication) し、サービスに接続します。アリスがサインインすると、自動的に天気データへアクセスできます。信頼されたアプリなので追加の同意画面は不要です。

サードパーティ AI エージェント

  • サービスのエコシステムを構築するため、他の開発者が「WeatherBot」(天気情報や予報を提供する AI アシスタント)を作成し、サードパーティ AI エージェントとして統合します。
  • 仕組み:WeatherBot(サードパーティ AI エージェント)は、サービス経由でユーザーの天気データへアクセスしたいと考えています。アリスが自分のアカウントで WeatherBot にサインインすると:
    • WeatherBot が天気データへアクセスする許可を求める同意画面が表示されます。
    • アリスはこのアクセスを許可または拒否できます。
    • アリスが同意したデータのみが WeatherBot と共有され、明示的な再同意なしに追加データへアクセスすることはできません。

このアクセス(権限)コントロールにより、サービスがすべてのデータを管理していても、WeatherBot のようなサードパーティ AI エージェントはユーザーが明示的に許可した範囲のみアクセスできます。このプロセスはサービス側のアクセス制御実装によって強制されるため、回避できません。

まとめ

クライアント種別同意が必要?誰がコントロール?
公式天気アプリ自分の天気アプリいいえ開発者(あなた)
サードパーティ AI エージェントWeatherBot アシスタントはい他の開発者
注記:

自分の AI エージェントやアプリとサービスを統合したい場合は、クイックスタートガイド を参照してください。

前提条件

  • Logto Cloud(またはセルフホスト)テナント
  • AI エージェントがアクセスする API エンドポイントを公開しているサービス

フローの理解

  • サービス:AI エージェントに公開したいサービス
  • AI エージェント:サービスへアクセスする AI エージェント
  • Logto:OpenID Connect プロバイダー(認可 (Authorization) サーバー)として機能し、ユーザーアイデンティティを管理

全体の流れを示す非規範的なシーケンス図:

サードパーティ AI エージェントのセットアップ

サードパーティ AI エージェントがサービスへアクセスできるようにするには、次の手順を実施します:

  1. Logto で AI エージェントを登録:AI エージェントを表すアプリケーションを Logto で作成します。
  2. AI エージェントを設定:AI エージェントがサービスへリクエストを送信し、401 Unauthorized レスポンスを処理できるようにします。
  3. 認可 (Authorization) フローを実装:AI エージェントが Logto からアクセス トークン (Access token) を取得できるよう、OAuth 2.0 認可フローを実装します。
  4. 統合をテスト:AI エージェントを使ってサービスへアクセスし、認証 (Authentication) と認可 (Authorization) リクエストが正常に行えるか検証します。

Logto でサードパーティ AI エージェントを設定する

サードパーティ AI エージェントが サービス にアクセスできるようにするには、Logto で サードパーティアプリ をセットアップする必要があります。このアプリは AI エージェントを表し、認証 (Authentication) と認可 (Authorization) に必要なクレデンシャルを取得するために使用されます。

サードパーティアプリとは?:

サードパーティアプリ とは、外部開発者(リソース所有者ではない)が作成し、保護されたリソースへアクセスするためにユーザーの同意が必要なアプリケーションです。ファーストパーティアプリ(自社アプリ)とは異なり、サードパーティアプリはユーザーのデータへアクセスする前に、特定の権限を承認する同意画面を表示します。これにより、ユーザーは外部サービスと共有するデータをコントロールできます。

詳細は サードパーティアプリケーション を参照してください。

AI エージェントをオンボードする方法は 3 つあります:

開発者が Logto でサードパーティアプリを作成できるようにする

マーケットプレイスを構築したり、開発者が Logto でサードパーティアプリを作成できるようにしたい場合は、Logto Management API を活用してプログラム的にサードパーティアプリを作成できます。これにより、開発者は自分のアプリケーションを登録し、認証 (Authentication) に必要なクレデンシャルを取得できます。

クライアント登録プロセスを処理する独自サービスをホストする必要があります。このサービスは Logto Management API と連携し、開発者の代わりにサードパーティアプリを作成します。

または、Logto コンソールで手動でサードパーティアプリを作成し、プロセスに慣れることもできます。

事前登録なしで任意の AI エージェントを接続させる

オープンな MCP エコシステムでは、事前にエージェントを把握できないことが一般的です。ダイナミックアプリ を利用すると、登録ステップが不要になります。エージェントは自身のクライアントメタデータドキュメントを公開する HTTPS URL を client_id として使用し、認可リクエストが届いた際に Logto がそれを解決します。

ダイナミックアプリに付与した権限を通じて、エージェントがリクエストできる内容をコントロールできます。また、すべての認可はユーザーの同意画面を経由します。

Logto でサードパーティアプリを手動作成する

テストやアドホックな連携のために、Logto コンソールでサードパーティアプリを手動作成できます。これは、クライアント登録フローを実装せずに素早く連携を試したい場合に便利です。

  1. Logto コンソールにサインインします。

  2. アプリケーションアプリケーションを作成サードパーティアプリOIDC を選択します。

  3. アプリ名やその他の必須項目を入力し、アプリケーションを作成 をクリックします。

  4. 権限 タブでアプリに 権限 を付与します:

    • ユーザー セクション:profileemail など、基本的なアイデンティティクレーム用のユーザーデータ権限。
    • API リソース セクション:Logto で定義した API リソース の権限(スコープ)。例:サービス を表す API リソース。
    • 組織 セクション:Logto 組織を利用している場合の組織権限。
  5. サードパーティアプリ側で、付与した権限をリクエストするスコープを設定します。例:openid profile email に加え、API リソースのスコープ。

    注意:OIDC では openid が必須です。API リソースに紐づくアクセス トークン (Access token) を受け取るには、認可リクエストに resource パラメータも含める必要があります。最新の MCP 仕様に準拠した MCP クライアントは、保護リソースのメタデータに基づきこれを自動で行います。

  6. サードパーティアプリの リダイレクト URI を適切に設定します。Logto 側のリダイレクト URI も忘れずに更新してください。

サードパーティアプリの権限

内部的には、サードパーティアプリは標準的な OAuth 2.0 / OIDC クライアントです。つまり、Logto との統合には、任意の OAuth 2.0 / OIDC ライブラリやフレームワークを利用できます(開発者またはサードパーティ開発者が選択可能)。

注意すべき点は以下の通りです:

  1. サードパーティアプリを作成する際は、アプリのアーキテクチャに応じて適切なアプリケーションタイプを選択してください:
    • 従来型ウェブ:クライアントシークレットを使って認証します。
    • シングルページアプリ / ネイティブ:クライアントシークレットなしで安全な認可を行うために PKCE を使用します。
  2. クイックスタートガイドの多くはファーストパーティアプリ向けに書かれていますが、サードパーティアプリの統合時にも参考にできます。
  3. 主な違いは、サードパーティアプリでは同意画面 (Consent screen) が表示され、ユーザーにデータアクセスの明示的な許可を求める点です。

統合ガイドの詳細は サードパーティアプリケーション をご覧ください。

サービスで認可 (Authorization) を設定

サービスでアクセス制御を有効にするには、次の実装が必要です:

  1. Logto で API リソースを定義:AI エージェントがアクセスするエンドポイントを表す API リソースを Logto で作成します。
  2. アクセス制御ロジックを実装:サービス側で、AI エージェントから受け取ったアクセス トークン (Access token) を検証し、ユーザーがリクエストされたリソースへアクセスする権限を持っているか確認するロジックを実装します。
  3. AI エージェントへレスポンス:アクセス トークン (Access token) が有効でユーザーに権限があれば、リクエストされたリソースを返します。そうでなければ 401 Unauthorized レスポンスを返します。

サービスでアクセス制御を実装する方法については、認可 (Authorization) ガイド を参照してください。

統合のテスト

  1. サービスを起動します。
  2. AI エージェントを起動します。
  3. AI エージェントで、サービスの API エンドポイントを呼び出します。
  4. AI エージェントは 401 Unauthorized レスポンスを処理し、ユーザーを Logto へ認証 (Authentication) のためリダイレクトします。
  5. 認証 (Authentication) が成功すると、AI エージェントはアクセス トークン (Access token) を受け取り、それを使ってサービスへリクエストを送信します。
  6. AI エージェントはアクセス トークン (Access token) を使ってサービスからリソースを取得できるはずです。