認証リファレンス authentication-reference

IMPORTANT
Adobe LLM Appsは現在Betaにいます。
ここに示す機能、ワークフロー、UIは、必ずしも製品の最終状態を表すものではありません。 Betaに参加するには、llm-apps-beta@adobe.comに電子メールを送信します。

このページを使用して、認証フィールドと契約を検索します。 セットアップ手順については、独自のID プロバイダーでエンドユーザーを認証するを参照してください。

認証の設定 authentication-settings

設定 > 認証​を開きます。 各環境には、独自の設定が保存されます。 Workspace ピッカーを使用して、編集対象の環境を選択します。設定を保存しても、他の環境には影響しません。

フィールド
必須
説明
ワークスペース
—
認証設定の環境:ステージ​または​実稼動
認証を有効にする
—
マスタースイッチ: オフにすると、認証モードに関係なくすべてのアクションが公開されます
発行者
はい
ID プロバイダーの発行元URLと、想定されるiss要求。 HTTPSである必要があります。 このアプリの認証サーバーとしても公開されます。 アプリごとに1つのID プロバイダー
サポートされている​範囲
いいえ
このアプリのアクションに必要なスコープの完全なセット。 アプリがサポートするスコープとしてLLM プラットフォームに公開
JWKS URI
いいえ
詳細: 署名キーセットのHTTPS URL。 認証サーバーのメタデータ広告と異なる場合にのみ必要です

検証ルール

ルール
効果
発行者​は空です。認証を有効にする​は有効です
保存はブロックされています
発行者​または​ JWKS URI ​はHTTPS URLではありません
保存はブロックされています
アクションには、個のスコープがサポートされていません
スコープを追加するかアクションから削除するまで、保存はブロックされます
サポートされているスコープ​からスコープが削除されました
保存を待たずにすぐに、それを必要とするすべてのアクションから削除されます
サポートされている​ 範囲 ​は空です
スコープを付与できないので、アクションに既に存在するスコープは削除されます。 この場合、警告は表示されません
offline_accessは、サポートされている範囲​またはアクションに一覧表示されます
アプリのデプロイ時に、ケーシングや周囲の空白に関係なく削除されるので、設定ページには、デプロイされたアプリにはないスコープを表示できます。 offline_accessは、このアプリへのアクセスを許可するのではなく、認証サーバーに更新トークンを要求しているため、このアプリが広告する範囲ではありません。 リストする必要はありません。LLM プラットフォームは、認証サーバーから直接リクエストします

発行者​の末尾のスラッシュが正規化されます。 issの比較では違いが許容されるため、末尾のスラッシュを常に含むプロバイダーのトークンは引き続き検証されます。

認証モード auth-modes

アクションごとの設定​のアクションごとに設定します。

モード
トークンが必要です
ハンドラーがIDを受信する
としてプラットフォームに広告されます
なし
いいえ
呼び出し元が有効なトークンを提供する場合のみ
noauth
必須
はい、リストされているすべてのスコープで
常に
oauth2
オプション
いいえ
有効なトークンがある場合
noauth および oauth2

必須 アクションのハンドラーは、有効で正しくスコープ付けされたトークンがなければ実行されません。 オプション アクションのハンドラーは常に実行され、extra.challengeAuth()へのサインイン自体を要求できます。

したがって、Required​は、未認証の発信者を拒否する唯一のモードです。 アプリは、すべてのアクションが​ 必須 ​の場合にのみ、すべての匿名呼び出しを拒否します。 任意のアクションが​ None ​または​ Optional ​の場合、少なくとも1つのアクションが匿名呼び出しを受け入れるため、アプリは混合認証を使用します。

認証モードは、認証を有効にする​が有効な場合にのみ有効になります。 変更は、アプリの次のデプロイメントに影響を与えます。

認証スイッチを変更すると、アクションごとのモードも書き換えられます。

切り替え
アクションごとのモードへの影響
オフからオン
None​個のアクションごとに​ 必須 ​になります。 アクションは既に​ 必須 ​または​ オプション ​でモードを維持しています
オンからオフ
その環境では、すべてのアクションのモードとスコープがクリアされます。 もう一度スイッチをオンにしても、設定は復元されません

Workspace​を切り替えると、モードが書き換えられません。 ピッカーは、他の環境に保存された設定を変更せずに読み込みます。

認証を有効にする​が有効で、すべてのアクションが​ なし ​に設定されているため、アプリは認証を必要としませんが、検出のために認証サーバーを公開します。 アプリを完全に公開するには、スイッチをオフにします。

アプリは、個々のアクションに対して異なる認証モードを使用できます。 各プラットフォームでの適用方法については、LLM プラットフォームの動作を参照してください。

トークン要件 token-requirements

ID プロバイダーは、次のすべての要件を満たすアクセストークンを発行する必要があります。 ランタイムは、チェックに失敗したトークンを不在として扱います。呼び出し元は未認証であり、必須 アクションが呼び出し元にサインインを求めます。

要件
詳細
形式
署名済みJWT。 不透明なトークンはサポートされていません
署名アルゴリズム
RS256、RS384、RS512、ES256、ES384、ES512、PS256、PS384またはPS512。 HS256などのHMAC アルゴリズムは拒否されます
iss
発行者​に一致する必要があります
aud
アプリのリソース識別子(その環境のMCP サーバーURL)を含める必要があります
exp
将来でなければなりません
scope か scp のどちらかにする必要があります。
ランタイムは、スペース区切りのscope文字列を読み取るか、scpの文字列の配列にフォールバックします。 各アクションの要件に照らしてチェックされたスコープには、これらのシェイプのいずれかを使用します
sub
ハンドラーがgetAuthenticatedUserを読み取るユーザー識別子
トランスポート
Authorization: Bearer <token> リクエストヘッダー

プロバイダーに含まれる追加のフラット要求(例:tenantまたはemail)は、ハンドラーに渡されます。 ネストされたオブジェクトはドロップされ、長い文字列値は切り捨てられます。

ID プロバイダーの検出 discovery

アプリは独自のRFC 9728保護されたリソースメタデータを公開しているため、LLM プラットフォームは認証サーバーを見つけることができます。 保護されたリソースのメタデータを作成、ホスト、設定する必要はありません。

ID プロバイダーは、次の検出情報を提供する必要があります。

要件
詳細
認証サーバーのメタデータ
認証サーバーは、LLM クライアントの検出メタデータを公開する必要があります。 JWKS URI​が設定されていない限り、このアプリのランタイムはRFC 8414のOAuth認証サーバーのメタデータを探してjwks_uriを見つけます。OIDC検出パスにフォールバックしません
パスを持つイシュア
よく知られているセグメントは、パスの後ではなく、パスの前に行きます。 https://auth.example.com/oauth2/defaultのイシュアは、https://auth.example.com/.well-known/oauth-authorization-server/oauth2/defaultでメタデータを提供します
ダイレクト署名キーURL
キーが別の場所でホストされているか、プロバイダーがOIDC検出のみを公開しているときに​ JWKS URI ​を設定します。 これにより、LLM クライアントで必要な検出ではなく、キーのランタイム検出が回避されます

ハンドラー認証API handler-auth-api

パッケージ @adobe/llm-apps-runtimeは、次のヘルパーを書き出します。 各ヘルパーはextraを受け入れます。これは、ハンドラーが受け取る2番目の引数です。

ヘルパー
戻り値
getAuthenticatedUser(extra)
サインイン ユーザーのsub要求、または呼び出しが未認証の場合はundefined
hasScope(extra, scope)
true呼び出し元のトークンがscopeを含む場合

検証済みのトークン情報はextra.authInfoで利用できます。これは、未認証の呼び出しの場合はundefinedです。

プロパティ
説明
authInfo.token
生のベアラートークン。 ログを記録しないか、クライアントに返さない
authInfo.clientId
client_idまたはazpの要求、またはunknown
authInfo.scopes
付与されたスコープの配列
authInfo.expiresAt
トークンの有効期限:exp件の要求
authInfo.resource
トークンが検証されたアプリのリソース識別子
authInfo.extra
subに加えて、ID プロバイダーが含まれているその他のフラットな請求

extra.challengeAuth(options)は、オプション アクションでのみ使用できます。 ハンドラーから結果を返し、コンテンツを返す代わりにユーザーにログインを依頼します。

ヘルパーは、ChatGPTに対するツール結果チャレンジを返します。 Claudeには、トランスポート レベルのHTTP チャレンジが必要です。 ランタイムは、Required アクションに対してそのチャレンジを提供しますが、オプションのハンドラーヘルパーを使用してはなりません。

オプション
説明
error
RFC 6750 Bearer エラーコード:invalid_token、insufficient_scopeまたはinvalid_request。 デフォルトは insufficient_scope
errorDescription
ユーザーに表示されるメッセージ。 デフォルトは汎用サインインプロンプトです
scope
リクエストするスペース区切りスコープ。 これを省略して、プラットフォームがアプリのサポートされているスコープにフォールバックできるようにします
IMPORTANT
常にerrorを明示的に設定してください。 有効なセッションのない発信者にはinvalid_tokenを使用し、トークンは有効だが必要な範囲が不足している発信者にのみinsufficient_scopeを使用します。 ランタイムは値をLLM プラットフォームに渡し、ログインプロンプトの文言を選択します。 任意のプロンプトを使用して、コードではなく条件を正確に記述したコードを送信します。

LLM プラットフォームの動作 platform-behavior

どちらのプラットフォームも同じアプリで公開アクションと保護アクションをサポートしていますが、ログイントリガーが異なります。

動作
ChatGPT
Claude
混合認証
公開アクションは匿名で作業します。必須 アクションはログインを要求します
必要に応じて​ログインすると、公開アクションは匿名で作業し、保護された呼び出しによってログインが開始されます
すべてのアクションを含むアプリ 必須
OAuth認証の設定
使用前に認証が必要です
コネクタの設定
すべてのアクションが​ 必須 ​の場合は​認証なし、すべてのアクションが​ OAuth ​を使用し、それ以外の場合は​ 混在 ​を使用します。これらの選択肢が提供されます
検出された設定を確認します。 混在アプリの場合は必要に応じてログイン、事前ログインの場合は今すぐ​を選択します
IDまたは必要な範囲がありません
Runtimeは、プラットフォームの認証チャレンジを返します
Runtimeは、IDが見つからないか無効な場合はHTTP 401を返し、有効なトークンに必要なスコープが見つからない場合は、スコープ不足の課題を含むHTTP 403を返します
オプション ハンドラーのextra.challengeAuth()
再認証を開始できます
HTTP ツール結果の応答が成功しても、ログインは開始されません。 ポータブル サインイン ゲートに​Required アクションを使用する

現在のクライアントの動作については、Claude lazy authenticationおよびChatGPT authenticationを参照してください。 コネクタのUIとポリシーは、アカウントと組織によって異なります。

関連

recommendation-more-help
llm-apps-help-main-toc