JWTBearerOAuth2AccessTokenProvider Controller Service
描述
提供 OAuth 2.0 访问令牌,可用作 HTTP 请求中的 Bearer 授权标头。 该Controller Service用于实现 OAuth 2.0 JWT 承载流。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Token Endpoint URL | | OAuth2 令牌端点的 URL。 | |
| Web Client Service | | 控制器服务 API:WebClientServiceProvidercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 用于调用令牌端点的 Web 客户端服务。 |
| Private Key Service | | 控制器服务 API:PrivateKeyServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 用于签署 JWT 的私钥服务。 |
| Signing Algorithm | PS256 |
| 用于签署 JWT 的算法。 |
| Issuer | | JWT 的发行人索赔 (iss)。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Subject | | JWT 的主题声明(子)。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Audience | | 观众为智威汤逊 (JWT) 索赔 (aud)。 如果需要多个受众,则以空格分隔的受众列表。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Scope | | JWT 的范围声明(范围)。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JWT ID | | The "jti" (JWT ID) claim provides a unique identifier for the JWT. The identifier value must be assigned in a
manner that ensures that there's a negligible probability that the same value will be accidentally assigned to a
different data object; if the application uses multiple issuers, collisions MUST be prevented among values produced
by different issuers as well. The "jti" value is a case-sensitive string. If set, it is recommended to set this
value to ${UUID()}.
支持表达式语言:是(仅使用环境/系统变量求值) | |
| Set JWT Header X.509 Cert Thumbprint | false |
| 如果为 true,将使用 X.509 证书的 DER 编码的 base64url 编码 SHA-256 指纹设置 JWT 标头 x5t 字段。如果设置为 true,则必须配置一个 SSLContextProvider 实例,并使用 RSA 算法的证书。 |
| SSL Context Service | | 控制器服务 API:SSLContextProvidercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 配置了用于设置 x5t 标头的证书的 SSLContextProvider 实例。 必须使用RSA算法。 |
| Key ID | | 用于签署 JWT 的公钥的 ID。 它将用作 JWT 中的 child 标头。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Grant Type | urn:ietf:params:oauth:grant-type:jwt-bearer | 为令牌端点请求中的 grant_type 参数设置的值。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Assertion Parameter Name | assertion | 用于令牌端点请求中 JWT 断言的参数名称。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Refresh Window | 5 minutes | 该服务将尝试刷新在刷新窗口内过期的令牌,从令牌过期中减去配置的持续时间。 | |
| JWT Expiration Time | 1 hour | 用于设置 JWT 相应声明的过期时间。如果返回的访问令牌不包含过期时间,则将与此值和刷新窗口一起用于重新获取新的访问令牌。 |
动态属性
| 名称 | 值 | 描述 |
|---|---|---|
| CLAIM.JWT 声明名称 | JWT 声明值 | 应添加到 JWT 的自定义声明。 |
| FORM.请求参数名称 | 请求参数值 | 应添加到针对令牌端点的请求体中的自定义参数。 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
提供的 Service API
OAuth2AccessTokenProvider
详细说明
JWT Bearer OAuth 2.0 Access Token Provider
说明
JWTBearerOAuth2AccessTokenProvider 提供了 OAuth2AccessTokenProvider 的一种实现,
用于支持 JWT Bearer Flow。
配置详情
每个暴露使用 OAuth 2.0 JWT Bearer Flow 进行认证的 API 的服务,在配置以及对用于
签署 JWT 的私钥的要求方面都可能有些差异。因此,该 Controller Service 支持敏感
动态属性,提供了一种指定自定义 JWT 声明(claim)的方式(使用键以 CLAIM.
为前缀的动态属性),以及指定针对 access token API 请求的自定义表单参数
(使用键以 FORM. 为前缀的动态属性)。
下面是一些知名 SaaS 方案的配置示例。
Google Identity(来源)
| 属性名/键 | 属性值 |
|---|---|
| Token Endpoint | https://oauth2.googleapis.com/token |
| Signing Algorithm | RS256 |
| Issuer | 服务账号的电子邮件地址 |
| Subject | (可选)应用为其请求委托访问权限的用户的电子邮件地址 |
| Audience | https://oauth2.googleapis.com/token |
| Scope | 以空格分隔的应用所请求权限列表 |
| JWT ID | 不设置 |
| Set JWT Header x5t | false |
| Key ID | 服务账号密钥的 key ID |
| Grant Type | urn:ietf:params:oauth:grant-type:jwt-bearer |
| Assertion Parameter Name | assertion |
Salesforce(来源)
| 属性名/键 | 属性值 |
|---|---|
| Token Endpoint | https://my-instance.develop.my.salesforce.com/services/oauth2/token |
| Signing Algorithm | RS256 |
| Issuer | Issuer 必须包含你为其注册了证书的 connected app 的 OAuth client_id(Consumer Key) |
| Subject | (可选)如果你为 Experience Cloud 站点实现此流程,subject 必须包含用户的用户名 |
| Audience | Audience 将授权服务器标识为目标受众。可以是 https://login.salesforce.com,沙箱则使用 https://test.salesforce.com |
| Scope | 不设置 |
| JWT ID | 不设置 |
| Set JWT Header x5t | false |
| Key ID | 不设置 |
| Grant Type | urn:ietf:params:oauth:grant-type:jwt-bearer |
| Assertion Parameter Name | assertion |
Microsoft(来源)
| 属性名/键 | 属性值 |
|---|---|
| Token Endpoint | https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token |
| Signing Algorithm | PS256 |
| Issuer | 使用 GUID 形式的应用 ID |
| Subject | 使用与 issuer 相同的值 |
| Audience | https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token |
| Scope | 不设置 |
| JWT ID | ${UUID()} |
| Set JWT Header x5t | true |
| SSL Context Service | 用于提供公共证书的 SSL Context Service,以便将其指纹(thumbprint)放入 JWT 头 |
| Key ID | 不设置 |
| Grant Type | client_credentials |
| Assertion Parameter Name | client_assertion |
FORM.client_id |
分配给你的应用的应用 ID |
FORM.tenant |
应用计划操作的目录租户(directory tenant),GUID 或域名格式 |
FORM.scope |
本次请求中传递的 scope 参数值应为所需资源的资源标识符(应用 ID URI),并加后缀 .default。包含的所有 scope 必须针对单个资源,包含多个资源的 scope 会导致错误。以 Microsoft Graph 为例,取值为 https://graph.microsoft.com/.default |
FORM.client_assertion_type |
urn:ietf:params:oauth:client-assertion-type:jwt-bearer |
Box(来源)
| 属性名/键 | 属性值 |
|---|---|
| Token Endpoint | https://api.box.com/oauth2/token |
| Signing Algorithm | RS256、RS384 或 RS512 |
| Issuer | Box 应用的 OAuth client ID |
| Subject | 如果应用代表该应用的 Service Account 行事,则为 Box Enterprise ID;如果应用代表其他用户行事,则为用户 ID |
| Audience | https://api.box.com/oauth2/token |
| Scope | 不设置 |
| JWT ID | ${UUID()} |
| Set JWT Header x5t | false |
| Key ID | 用于签署 JWT 的公钥 ID。非必需,但在应用定义了多个密钥对时必不可少 |
| Grant Type | urn:ietf:params:oauth:grant-type:jwt-bearer |
| Assertion Parameter Name | assertion |
| JWT Expiration Time | 1 minute(不能超过 60 秒) |
CLAIM.box_sub_type |
根据 sub 声明中请求的令牌类型取 enterprise 或 user |
FORM.client_id |
Client ID |
FORM.client_secret |
Client Secret |