基于 OIDC 实现 SSO 电子签名验证
以下主题与下列用户相关:
您的站点将在其工作流进程中使用电子签名。有关详情,请参阅电子签名设置
您希望要求用户在提交电子签名之前提供凭据。
您的站点通过单一登录 (SSO) 配置和标识提供工具 (IdP) 提供身份验证。
* 
PTC 建议:在使用 SSO 配置中的电子签名功能和使用基于证书的身份验证 (CAC/PKI) 时,设置第二身份验证策略 (即多因素身份验证)。由于浏览器缓存了证书,因此不能强制进行所需的重新验证。因此,可能需要使用第二身份验证策略 (如多因素身份验证) 才能确保向用户显示重新身份验证。
* 
以下说明假设已经为 Windchill 配置基本的 SSO 配置。有关详情,请参阅 OpenID Connect 身份验证支持
使用 OpenID Connect 配置电子签名
按照以下步骤进行配置:
* 
对于 Microsoft Entra ID,需要在应用程序注册中添加 auth_time 声明作为 ID 令牌类型。
在 PingFederate 中,默认定义 auth_time 声明,且无法将其从令牌中移除。这可能会使 Windchill 电子签名功能中断。
2. 在 IdP 中为电子签名应用程序配置以下 URL:
https://<Host:Port>/<WebAppName>/reauthsecure/SSOReAuthentication.jsp?buttonId=workflowEsignCompleteButton.
https://<Host:Port>/<WebAppName>/reauthsecure/SSOReAuthentication.jsp
3. wt.properties 中通过 site.xconf 添加以下特性:
特性
说明
示例
wt.jwt.oidc.esign.providerURL
IdP 上的 OpenID 配置。它是 IdP 中存在的 openid-configuration 的路径。
对于 PingFederate:https://host_name:9031/.well-known/openid-configuration
对于 Microsoft Entra ID:https://login.microsoftonline.com/..well-known/openid-configuration
wt.jwt.oidc.esign.clientId
来自 IdP 的客户端 ID
wt.jwt.oidc.esign.clientSecrets
IdP 中的客户端密码。需要存储在 Windchill keystore 中,并使用默认值 encrypted.esign.clientSecrets。检查 Manage esign secrets 部分。
wt.jwt.oidc.esign.scope
IdP 中的范围定义,默认为 "openid"
openid
wt.jwt.oidc.esign.audience
指定用于受众验证的值。
wt.org.electronicIdentification.class
wt.workflow.engine.SSOConfiguredSignatureEngine
wt.jwt.oauth2.token.userAttrName
指定 IdP 中的属性,要用作 Windchill 用户名的身份验证令牌。
wt.auth.sso.type
值应为 OIDC
wt.auth.oidc.validation.jwt.tokentype
值应为 ID_TOKEN
wt.jwt.oauth2.token.kidUrl
对于 Microsoft Entra ID,将值设置为 https://login.microsoftonline.com/<tenant_id>/discovery/v2.0/keys。
对于 PingFederate,将值设置为 https://hostname:9031/pf/JWKS。
wt.jwt.oauth2.token.tokenIssuer
IdP 中的令牌颁发者
PingFederate:值为 https://hostname:9031
Microsoft Entra ID:值为 https://sts.windows.net//<tenant_id>/
wt.jwt.id.token.extraClaimsToBeValidated
其值可以是下列其中一个或多个值:iss、aud、exp、sub 和/或 typ。此特性会将默认强制声明的列表作为值。此特性用于验证 JWT 令牌中的额外声明,例如 iat 和 nbf。
对于 PingFederate JWT,此特性不是必需特性。
wt.jwt.oauth2.token.authtime.tolerance
验证传入令牌中的 auth_time 声明,以重新进行身份验证。它应在此公差时间后过期。
默认值:10。值的单位为秒。
管理电子签名密钥
* 
确保已将加密配置为管理密钥。
要配置和管理 Windchill 密钥存储中的电子签名密钥,运行以下命令:
ant -f <WT_HOME>/bin/adminTools/sip/EncryptPasswords.xml addValueToKeyStore -DpropertyName=esign.clientSecrets -Dpassword=<esign_ clientSecrets >
# esign_ clientSecrets: should be defined in IDP for Esign App and set in Windchill
这对您有帮助吗?