身份验证引用 authentication-reference
此页用于查找验证字段和协定。 有关设置说明,请参阅使用您自己的身份提供程序对最终用户进行身份验证。
身份验证设置 authentication-settings
打开设置 > 身份验证。 每个环境都存储自己的设置。 使用 Workspace 选取器选择要编辑的环境;保存设置不会影响其他环境。
iss声明。 必须为HTTPS。 还作为此应用程序的授权服务器发布。 每个应用程序一个身份提供程序验证规则
offline_access在 支持的作用域 中或在操作中列出offline_access向授权服务器请求刷新令牌,而不是授予对此应用的访问权限,因此它不是此应用通告的范围。 您无需将其列出 — LLM平台直接从您的授权服务器请求它颁发者上的尾随斜杠已标准化。 iss比较允许存在差异,因此始终包含尾随斜杠的提供程序中的令牌仍会进行验证。
身份验证模式 auth-modes
在 每个操作配置 下为每个操作设置。
noauthoauth2noauth 和 oauth2Required操作的处理程序从不在没有有效、范围正确的令牌的情况下运行。 Optional操作的处理程序始终运行,并且可能会要求使用extra.challengeAuth()本身登录。
因此,必需是唯一拒绝未经身份验证的呼叫者的模式。 仅当每个操作都是 必需的 时,应用才会拒绝所有匿名调用。 如果任何操作为 None 或Optional,则应用程序将使用混合身份验证,因为至少有一个操作接受匿名调用。
只有在 启用身份验证 打开时,身份验证模式才会生效。 所做的更改将在应用程序下次部署时生效。
更改身份验证交换机也会重写每个操作的模式:
切换 Workspace 从不重写模式。 选取器加载其他环境的已保存配置而不更改它。
如果启用身份验证,并且每个操作都设置为无,则应用不需要身份验证,但仍会发布其授权服务器以进行发现。 要使应用程序完全公开,请关闭开关。
应用程序可以对各个操作使用不同的身份验证模式。 查看LLM平台行为,了解每个平台如何应用它们。
令牌要求 token-requirements
您的身份提供程序必须颁发满足以下所有要求的访问令牌。 运行时将未通过任何检查的令牌视为不存在:调用方未经过身份验证,Required操作会要求调用方登录。
RS256、RS384、RS512、ES256、ES384、ES512、PS256、PS384或PS512。 HMAC算法(如HS256)被拒绝issaudexpscope 或 scpscope字符串,或回退到scp中的字符串数组。 对于根据每个操作要求检查的范围,请使用这些形状之一subgetAuthenticatedUser读取的用户标识符Authorization: Bearer <token>请求标头您的提供商包括的任何其他平面声明(例如tenant或email)都会传递给您的处理程序。 嵌套对象将被删除,长字符串值将被截断。
身份提供程序发现 discovery
您的应用程序发布自己的RFC 9728受保护资源元数据,以便LLM平台能够找到您的授权服务器。 您不需要创建、托管或配置受保护的资源元数据。
您的身份提供程序必须提供以下发现信息:
jwks_uri;它不会回退到OIDC发现路径https://auth.example.com/oauth2/default的颁发者在https://auth.example.com/.well-known/oauth-authorization-server/oauth2/default提供其元数据处理程序身份验证API handler-auth-api
包@adobe/llm-apps-runtime导出以下帮助程序。 每个辅助函数都接受extra,这是处理程序所接收的第二个参数。
getAuthenticatedUser(extra)sub声明,或呼叫未经身份验证时的undefinedhasScope(extra, scope)scope时true验证令牌信息在extra.authInfo中可用,对于未经身份验证的调用,该信息为undefined。
authInfo.tokenauthInfo.clientIdclient_id或azp声明,或unknownauthInfo.scopesauthInfo.expiresAtexp声明authInfo.resourceauthInfo.extrasub加上您的身份提供程序包含的任何其他平面声明extra.challengeAuth(options)仅可用于 可选 操作。 从您的处理程序返回其结果,要求用户登录而不是返回内容。
辅助函数返回ChatGPT的工具结果质询。 Claude需要传输级别的HTTP质询。 运行时提供对 必需的 操作的挑战,但不通过可选处理程序帮助程序。
errorerrorDescriptionscopeerror。 invalid_token用于没有有效会话的调用方,而insufficient_scope仅用于令牌有效但缺少所需范围的调用方。 运行时将值传递给LLM平台,后者选择登录提示的措辞。 发送准确描述条件的代码,而不是使用首选提示发送的代码。LLM平台行为 platform-behavior
两个平台都支持同一应用程序中的公共操作和受保护操作,但它们的登录触发器有所不同。
extra.challengeAuth()有关当前客户端行为,请参阅Claude延迟身份验证和ChatGPT身份验证。 连接器UI和策略可能因帐户和组织而异。