JWTBearerOAuth2AccessTokenProvider

文档中心 › 组件索引 › JWTBearerOAuth2AccessTokenProvider

JWTBearerOAuth2AccessTokenProvider Controller Service

类型全限定名:cn.org.acal.lynxus.oauth2.JWTBearerOAuth2AccessTokenProvider

所属 Bundle:cn.org.acal.lynxus:lynxus-oauth2-provider-nar:2.11.8

描述

提供 OAuth 2.0 访问令牌,可用作 HTTP 请求中的 Bearer 授权标头。 该Controller Service用于实现 OAuth 2.0 JWT 承载流。

标签

oauth2providerauthorizationaccess tokenhjwt

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Token Endpoint URLOAuth2 令牌端点的 URL。
Web Client Service控制器服务 API:
WebClientServiceProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于调用令牌端点的 Web 客户端服务。
Private Key Service控制器服务 API:
PrivateKeyService
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于签署 JWT 的私钥服务。
Signing AlgorithmPS256
  • RS256
  • RS384
  • RS512
  • PS256
  • PS384
  • PS512
  • ES256
  • ES384
  • ES512
  • Ed25519
用于签署 JWT 的算法。
IssuerJWT 的发行人索赔 (iss)。
支持表达式语言:是(仅使用环境/系统变量求值)
SubjectJWT 的主题声明(子)。
支持表达式语言:是(仅使用环境/系统变量求值)
Audience观众为智威汤逊 (JWT) 索赔 (aud)。 如果需要多个受众,则以空格分隔的受众列表。
支持表达式语言:是(仅使用环境/系统变量求值)
ScopeJWT 的范围声明(范围)。
支持表达式语言:是(仅使用环境/系统变量求值)
JWT IDThe "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 Thumbprintfalse
  • true
  • false
如果为 true,将使用 X.509 证书的 DER 编码的 base64url 编码 SHA-256 指纹设置 JWT 标头 x5t 字段。如果设置为 true,则必须配置一个 SSLContextProvider 实例,并使用 RSA 算法的证书。
SSL Context Service控制器服务 API:
SSLContextProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
配置了用于设置 x5t 标头的证书的 SSLContextProvider 实例。 必须使用RSA算法。
Key ID用于签署 JWT 的公钥的 ID。 它将用作 JWT 中的 child 标头。
支持表达式语言:是(仅使用环境/系统变量求值)
Grant Typeurn:ietf:params:oauth:grant-type:jwt-bearer为令牌端点请求中的 grant_type 参数设置的值。
支持表达式语言:是(仅使用环境/系统变量求值)
Assertion Parameter Nameassertion用于令牌端点请求中 JWT 断言的参数名称。
支持表达式语言:是(仅使用环境/系统变量求值)
Refresh Window5 minutes该服务将尝试刷新在刷新窗口内过期的令牌,从令牌过期中减去配置的持续时间。
JWT Expiration Time1 hour用于设置 JWT 相应声明的过期时间。如果返回的访问令牌不包含过期时间,则将与此值和刷新窗口一起用于重新获取新的访问令牌。

动态属性

动态属性允许用户自定义属性的名称与值。

名称值描述
CLAIM.JWT 声明名称JWT 声明值应添加到 JWT 的自定义声明。
FORM.请求参数名称请求参数值应添加到针对令牌端点的请求体中的自定义参数。

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

提供的 Service API

  • OAuth2AccessTokenProvider (cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8)

详细说明

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