GenerateJWT 政策部署错误问题排查

您正在查看 ApigeeApigee Hybrid 文档。
查看 Apigee Edge 文档。

InvalidNameForAdditionalClaim

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid name for additional claim : policy(policy_name) claim(claim_name).

错误消息示例

Error Saving Revision 2
Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果 <AdditionalClaims> 元素的子元素 <Claim> 使用的声明名称是下列某个已注册名称,就会出现此错误:

“kid”“iss”“sub”“aud”“iat”“exp”“nbf”“jti”

RFC 7519 中指定了已注册声明。

例如,在 <AdditionalClaims> 元素下使用声明名称 iss 会导致此错误。

诊断

  1. 标识“生成 JWT”政策的名称以及错误消息中的声明名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,声明名称为 iss

    Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
    
  2. 验证失败的“生成 JWT”政策 XML 中的 <AdditionalClaims> 元素下方使用的声明名称是否与错误消息中标识的声明名称匹配(上文中的第 1 步)。例如,以下政策将声明指定为 iss,它与错误消息中的内容匹配:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name="iss"/>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明名称是以下某个已注册名称:

    “kid”“iss”“sub”“aud”“iat”“exp”“nbf”“jti”

    就会导致错误。

    在上面所示的“生成 JWT”政策示例中,<Claim> 名称在 <AdditionalClaims> 元素下指定为 iss,从而导致错误:

    Invalid name for additional claim : policy(JWT-Generate-HS256) claim(iss).
    

解决方法

不要在 <AdditionalClaims> 元素的子元素 <Claim> 中使用以下任何已注册名称:“kid”“iss”“sub”“aud”“iat”“exp”“nbf”或“jti”。

如需更正上面显示的“生成 JWT”政策示例,请将声明名称更改为 status

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='status' type='string'>Development</Claim>
    </AdditionalClaims>
</GenerateJWT>

InvalidTypeForAdditionalClaim

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid type for additional claim : policy(policy_name) claim(claim_name) type(type_name).

错误消息示例

Error Saving Revision 2
Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果 GenerateJWT 政策的 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明类型不是以下类型之一,则会出现此错误:

string(默认)、numberbooleanmap

例如,在 <AdditionalClaims> 元素下使用声明类型 integer 会导致错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称、声明名称和声明类型。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,声明名称为 claim,声明类型为 integer

    Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).
    
  2. 验证失败的“生成 JWT”政策 XML 中 <AdditionalClaims> 元素下方使用的声明名称和类型是否与第 1 步中错误消息中标识的声明名称和类型相匹配。例如,以下政策将声明指定为 claim,类型为 integer,与错误消息中的内容匹配:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='integer'/>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的声明类型不是以下类型之一:

    string(默认)、numberbooleanmap

    就会导致错误。

    在上面显示的“生成 JWT”政策示例中,<AdditionalClaims> 元素下的 <Claim> 类型被指定为 integer。由于 integer 不是支持的类型,因此您会收到以下错误:

    Invalid type for additional claim : policy(JWT-Generate-HS256) claim(claim) type(integer).
    

解决方法

确保在 <AdditionalClaims> 元素的子元素 <Claim> 中仅使用支持的数据类型,例如 stringnumberbooleanmap

如需更正上面显示的“生成 JWT”政策示例,请将声明类型更改为 boolean

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</GenerateJWT>

MissingNameForAdditionalClaim

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Error occurred while validation of bean(policy_name.xml) Reason: - Required attribute name is missing in Claim.

错误消息示例

Error Saving Revision 2
Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果在 <AdditionalClaims><AdditionalHeaders> 元素的子元素 <Claim> 中未指定声明名称,就会出现此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称。例如,在以下错误消息中,“生成 JWT 政策”的名称为 JWT-Generate-HS256

    Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
    
  2. 检查失败的“生成 JWT”政策 XML,并验证 <AdditionalClaims><AdditionalHeaders> 元素下的子元素 <Claims> 中是否缺少声明名称。例如,以下“生成 JWT”政策不会在 <AdditionalClaims> 元素下指定声明名称:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim ref='reqclaim' type='boolean'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    由于没有在 <AdditionalClaims> 元素下指定 <Claim> 名称,因此会出现以下错误:

    Error occurred while validation of bean JWT-Generate-HS256.xml. Reason: - Required attribute name is missing in Claim
    

解决方法

确保始终在 <AdditionalClaims><AdditionalHeaders> 元素的子元素 <Claim> 中指定声明名称。

如需更正上面显示的“生成 JWT”政策示例,请按如下所示指定声明名称:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</GenerateJWT>

InvalidNameForAdditionalHeader

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid name for additional header : policy(policy_name)header(header_name).

错误消息示例

Error Saving Revision 2
Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果在 <AdditionalHeaders> 元素的子元素 <Claim> 中使用的声明名称是以下任一标准 JWT 标头,则会出现此错误:

algtyp

例如,在 <AdditionalHeaders> 元素下使用声明名称 alg 将导致错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策和标头名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,标头名称为 alg

    Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
    
  2. 验证失败的“生成 JWT”政策 XML 中 <AdditionalHeaders> 元素下方的子元素 <Claim> 中使用的标头名称与第 1 步错误消息中标识的标头名称匹配。例如,以下政策将标头指定为 alg,它与错误消息中的内容匹配:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalHeaders>
            <Claim name="alg"/>
        </AdditionalHeaders>
    </GenerateJWT>
    
  3. 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的标头名称是以下标准 JWT 标头之一:

    algtyp

    就会导致错误。

    在上面所示的“生成 JWT”政策示例中,<Claim> 名称在 <AdditionalClaims> 元素下指定为 alg,从而导致错误:

    Invalid name for additional header: policy(JWT-Generate-HS256) header(alg).
    

解决方法

请勿在 <AdditionalHeaders> 元素的子元素 <Claim> 中使用标准 JWT 标头 algtyp

如需更正上面显示的“生成 JWT”政策示例,请在 <AdditionalHeaders> 元素的子元素 <Claim> 中使用名称 x5c

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='x5c'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidTypeForAdditionalHeader

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid type for additional header : policy(policy_name) claim(claim_name) type(type_name).

错误消息示例

Error Saving Revision 2
Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim1) type(integer).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果 GenerateJWT 政策 <AdditionalHeaders> 元素的子元素 <Claim> 中使用的声明类型不是以下任一类型,则会出现此错误:

string(默认)、numberbooleanmap

例如,在 <AdditionalHeaders> 元素下使用声明类型 integer 将导致错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称、声明名称和声明类型。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,声明名称为 claim,,声明类型为 integer:

    Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim) type(integer).
    
  2. 验证失败的“生成 JWT”政策 XML 的 <AdditionalClaims> 元素下方使用的声明名称和声明类型是否与第 1 步中错误消息中标识的声明名称和声明类型相匹配。例如,以下政策将声明指定为 claim,声明类型为 integer,与错误消息中的内容匹配:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalHeaders>
            <Claim name='claim' ref='reqclaim' type='integer'/>
        </AdditionalHeaders>
    </GenerateJWT>
    
  3. 如果 <AdditionalHeaders> 元素的子元素 <Claim> 中使用的声明类型不是以下类型之一:

    string(默认)、numberbooleanmap

    就会导致错误。

    在上面显示的“生成 JWT”政策示例中,<AdditionalHeaders> 元素下的 <Claim> 类型被指定为 integer。由于 integer 不是支持的类型,因此您会收到以下错误:

    Invalid type for additional header : policy(JWT-Generate-HS256) claim(claim) type(integer).
    

解决方法

确保在 <AdditionalHeaders> 元素的子元素 <Claim> 中仅使用支持的数据类型 stringnumberbooleanmap

如需更正上面显示的“生成 JWT”政策示例,请将声明类型更改为 boolean

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidValueOfArrayAttribute

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid value for array attribute: policy(policy_name)claim(claim_name).

错误消息示例

Error Saving Revision 2
Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果 <AdditionalClaims><AdditionalHeaders> 元素的子元素 <Claim> 中的数组属性值未设置为 truefalse,则会出现此错误。

例如,在 <AdditionalClaims><AdditionalHeaders> 的子元素 <Claim> 中将数组属性值设置为 yes 会导致错误。

诊断

  1. 标识“生成 JWT”政策的名称以及错误消息中的声明名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,声明名称为 claim:

    Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
    
  2. 验证失败的“生成 JWT”政策 XML 中 <AdditionalHeaders> 元素下子元素 <Claim> 中使用的声明名称与第 1 步错误消息中标识的声明名称匹配。例如,以下政策将声明名称指定为 claim,它与错误消息中的内容匹配:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='yes'/>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. 如果 <AdditionalClaims> 元素的子元素 <Claim> 中的 array 属性值未设置为 truefalse,则会导致错误。

    由于 <AdditionalClaims> 元素的子元素 <Claim> 中的 array 属性设为上述示例中的 yes,因此会收到错误:

    Invalid value for array attribute: policy(JWT-Generate-HS256) claim(claim).
    

解决方法

确保 <AdditionalClaims><AdditionalHeaders> 的子元素 <Claim> 中的数组属性值设置为 truefalse

如需更正上面显示的“生成 JWT”政策示例,请将数组属性值更改为 true

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidConfigurationForActionAndAlgorithm

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid configuration element for this action and algorithm Family: policy(<var>policy_name</var>) element(<var>element_name</var>) action(<var>action_name</var>) family(<var>family_name</var>).

错误消息示例

Error Saving Revision 2
Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果将 <PrivateKey> 元素与 HS 系列算法搭配使用,而 <SecretKey> 元素与 RSA 系列算法搭配使用,则会发生此错误。如果这些条件中的任意一个为 true,也会出现此错误。

例如,如果将 <PrivateKey> 元素与 HS 系列算法搭配使用,就会导致此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策名称、元素名称和算法系列名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,元素名称为 PrivateKey,算法系列为 HMAC

    Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
    
  2. 验证失败的“生成 JWT”政策 XML 中使用的元素和算法系列是否与第 1 步错误消息中标识的元素和算法系列匹配。例如,以下政策将元素指定为 PrivateKey,算法系列指定为 HMAC,这与错误消息中的内容匹配:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <PrivateKey>
            <Password ref="private.privatekey-password"/>
    
        </PrivateKey>
            <ExpiresIn>1h</ExpiresIn>
            <Subject>monty-pythons-flying-circus</Subject>
            <Issuer>urn://apigee-JWT-policy-test</Issuer>
            <Audience>fans</Audience>
            <Id/>
            <AdditionalClaims>
                <Claim name='claim' ref='reqclaim' type='string' array=tuu
        =/>
            </AdditionalClaims>
        </GenerateJWT>
    
  3. 如果 <Algorithm> 元素的值为 HS256,但您使用了 <PrivateKey>,则会导致错误。

    在上面显示的“生成 JWT”政策示例中,即使将 <PrivateKey> 设置为系列算法 HS256,系统也会使用 <PrivateKey>,从而导致错误:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Generate-HS256) element(PrivateKey) action(Generate) family(HMAC).
    

解决方法

确保 <PrivateKey> 元素仅与 RSA 系列算法搭配使用,<SecretKey> 元素仅与 HS 系列算法搭配使用。

如需更正上面显示的“生成 JWT”政策示例,请使用利用 HS256 算法的 GenerateJWT 政策中的 <SecretKey>

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidValueForElement

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid Value for element : policy(policy_name) element(element_name).

错误消息示例

Error Saving Revision 2
Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果 <Algorithm> 元素中指定的值不是以下值之一,就会出现此错误:

HS256HS384HS512RS256RS384RS512

例如,在 <Algorithm> 元素中将算法值指定为 RS128 会导致此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称和元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,元素名称为 Algorithm.

    Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
    
  2. 检查失败的“生成 JWT”政策 XML,并检查为 <Algorithm> 元素指定的值。

    下面是一个“生成 JWT”政策示例:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS128</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='status' type='string'>Development</Claim>
        </AdditionalClaims>
    </GenerateJWT>
    
  3. 检查在 <Algorithm> 元素中指定的值。如果不是以下值之一:

    HS256HS384HS512RS256RS384RS512

    就会导致错误。

    在上面显示的“生成 JWT”政策示例中,<Algorithm> 名称被指定为 HS128。由于系统不支持此算法,因此收到错误:

    Invalid Value for element : policy(JWT-Generate-HS256) element(Algorithm).
    

解决方法

确保在 <Algorithm> 元素中指定的值是受支持的值之一:

HS256HS384HS512RS256RS384RS512

如需更正上面显示的“生成 JWT”政策示例(使用 <SecretKey> 元素),请将 <Algorithm> 的值更改为 HS25。请注意,使用 <SecretKey> 元素时,只能使用 HS 系列算法。

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='status' type='string'>Development</Claim>
    </AdditionalClaims>
</GenerateJWT>

MissingConfigurationElement

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Missing configuration element : policy(policy_name) element(element_name).

错误消息示例

Error Saving Revision 2
Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

<PrivateKey> 元素在“生成 JWT”政策中与 RSA 系列算法搭配使用时,会发生此错误。同样,如果 <SecretKey> 元素在“生成 JWT”政策中与 HS 系列算法搭配使用时,也会发生此错误。

例如,如果不将 <PrivateKey> 元素与 RSA 系列算法搭配使用,则会导致此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称和缺少元素名称。例如,在以下错误消息中,“生成 JWT 政策”的名称为 JWT-Generate-HS256,缺少元素名称为 SecretKey

    Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
    
  2. 检查失败的“生成 JWT”政策 XML,并验证错误消息中指定的元素是否缺失。如果缺失,则会导致错误。

    例如,在以下政策中,SecretKey 缺失,且使用的 AlgorithmHS256

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    “生成 JWT”政策示例使用 HS 系列算法,但缺少必需元素 SecretKey,从而导致以下错误:

    Missing configuration element : policy(JWT-Generate-HS256) element(SecretKey).
    

解决方法

确保将必需的 <PrivateKey> 元素与 RSA 系列算法搭配使用,并且必需的 <SecretKey> 元素与 HS 系列算法搭配使用。

如需更正上面显示的“生成 JWT”政策示例(使用 HS256 算法),请将 <SecretKey> 元素添加到“生成 JWT”政策:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidKeyConfiguration

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 
Invalid Key configuration : policy(policy_name).

错误消息示例

Error Saving Revision 3
Invalid Key configuration : policy(JWT-Generate-HS256).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 3 时出错。

原因

如果在“生成 JWT”政策的 <PrivateKey><SecretKey> 元素中未定义必需的子元素 <Value>,就会出现此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256

    Invalid Key configuration : policy(JWT-Generate-HS256).
    
  2. 检查失败的“生成 JWT”政策 XML,并验证是否子元素 <Value> 是否未在 <PrivateKey><SecretKey> 元素定义。如果未定义 <Value>,则会导致错误。

    例如,在以下政策中,子元素 <Value> 未在 <SecretKey> 元素中定义:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    由于未在“生成 JWT”政策的 <SecretKey> 元素中定义子元素 <Value>,因此收到以下错误:

    Invalid Key configuration : policy(JWT-Generate-HS256).
    

解决方法

确保始终在“生成 JWT”政策的 <PrivateKey><SecretKey> 元素中定义子元素 <Value>

如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey> 元素下定义子元素 <Value>,如下所示:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

EmptyElementForKeyConfiguration

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Empty Element for Key Configuration : policy(policy_name) element(element_name).

错误消息示例

Error Saving Revision 2
Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 中的 ref 属性未指定或为空,则会发生此错误。

例如,如果 <SecretKey> 元素的子元素 <Value> 为空,则会出现此错误。

诊断

  1. 从错误消息中确定“生成 JWT”政策名称和空元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,空元素名称为 SecretKey/Value

    Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
    
  2. 检查失败的“生成 JWT”政策 XML,并验证第 1 步中标识的元素是否为空。如果为空,则会导致错误。

    例如,以下政策表明 <SecretKey> 元素的子元素 <Value> 为空:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value/>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    由于“生成 JWT”政策中 <SecretKey> 元素的子元素 <Value> 为空,您收到以下错误:

    Empty Element for Key Configuration : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

解决方法

确保始终在 <PrivateKey><SecretKey> 元素的子元素 <Value> 中指定 ref 属性,并且具有前缀“private.”。

如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey> 元素的子元素 <Value> 中使用流变量 private.privatekey

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidVariableNameForSecret

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid variable name for secret : policy(policy_name) element(element_name).

错误消息示例

Error Saving Revision 2
Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果在 <PrivateKey><SecretKey> 元素的子元素 <Value> ref 属性中指定的流变量名称未包含专用前缀 (private.),则会出现此错误。

例如:

如果在 <PrivateKey> 元素的子元素 <Value> ref 属性中将流变量名称指定为 mykey,则会出现此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称,以及含无效变量名称的元素的名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,元素名称为 SecretKey/Value

    Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
    
  2. 检查失败的“生成 JWT”政策 XML,并验证在第 1 步中标识的元素中使用的变量名称。如果变量名称没有前缀 private.,则会导致错误。

    例如,以下政策表明 <SecretKey> 元素的子元素 <Value> 具有无效变量名称 mykey

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value ref="mykey"/>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    由于在“生成 JWT”政策的 <SecretKey> 元素的子元素 <Value> 中指定的变量名称没有 private. 前缀,因此收到以下错误:

    Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

解决方法

确保 <PrivateKey><SecretKey> 元素的子元素 <Value> 中的 ref 属性始终指定,并且具有前缀 private.

如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey> 元素的子元素 <Value> 中使用流变量 private.privatekey

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidSecretInConfig

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Specifying a secret in the configuration is invalid : policy(policy_name) element(element_name).

错误消息示例

Error Saving Revision 2
Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 2 时出错。

原因

如果在下列各项中显式指定值(密钥),就会出现此错误:

  • <PrivateKey> 元素的子元素 <Value><Password>,或
  • <SecretKey> 元素的子元素 <Value>

(“生成 JWT”政策中)。

例如,如果在 <SecretKey> 元素的子元素 <Value> 中显式将密钥指定为 abc,则会出现此错误。

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称,以及显式指定密钥的元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,元素名称为 SecretKey/Value

    Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
    
  2. 检查失败的“生成 JWT”政策 XML,并验证是否在第 1 步中标识的元素中显式指定了密钥。如果已显式指定,则会导致错误。

    例如,以下政策表明已在 <SecretKey> 元素的子元素 <Value> 中显式指定密钥:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <SecretKey>
            <Value>abc</Value>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    由于已在“生成 JWT”政策的 <SecretKey> 元素的子元素 <Value> 中显式指定了密钥,因此收到以下错误:

    Specifying a secret in the configuration is invalid : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

解决方法

确保始终在 <PrivateKey><SecretKey> 元素的子元素 <Value> 中将该值指定为流变量。

如需更正上面显示的“生成 JWT”政策示例,请在 <SecretKey> 的子元素 <Value> 的 ref 属性中使用流变量 private.secretkey

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <ExpiresIn>1h</ExpiresIn>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>

InvalidTimeFormat

错误消息

通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:

Error Saving Revision 2
Invalid Time format: policy(policy_name) element(element_name).

错误消息示例

Error Saving Revision 3
Invalid Time format: policy(JWT-Generate-HS256) element(NotBefore).

示例屏幕截图

在 Apigee 界面中,您会看到一个有错误的对话框:

保存修订版本 3 时出错。

原因

如果在 <NotBefore> 元素中指定的值不是支持的格式之一,就会出现此错误:

sortableRFC 1123RFC 850ANCI-C

例如,如果在 <NotBefore> 中指定的值是 20-JUN-1990 08:03(格式不受支持),则会出现此错误。

<NotBefore>20-JUN-1990 08:03:00:21-07:00</NotBefore>

诊断

  1. 从错误消息中标识“生成 JWT”政策的名称,以及具有无效时间格式的元素名称。例如,在以下错误消息中,“生成 JWT”政策的名称为 JWT-Generate-HS256,元素名称为 NotBefore

    Invalid Time format: policy(JWT-Generate-HS256) element(NotBefore).
    
  2. 检查失败的“生成 JWT”政策 XML,并验证在第 1 步中标识的元素中使用的时间格式。如果元素未使用任何支持的格式:

    sortableRFC 1123RFC 850ANCI-C

    就会导致错误。

    例如,以下政策表明子元素 <NotBefore> 使用不受支持的时间格式:

    <GenerateJWT name="JWT-Generate-HS256">
        <DisplayName>JWT Generate HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <NotBefore>20-JUN-1990 08:03:00:21-07:00</NotBefore>
        <SecretKey>
            <Value ref="private.secretkey"/>
            <Id>1918290</Id>
        </SecretKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </GenerateJWT>
    

    由于“生成 JWT”政策的元素 <NotBefore> 不使用任何支持的时间格式,因此您收到以下错误:

    Invalid variable name for secret : policy(JWT-Generate-HS256) element(SecretKey/Value).
    

解决方法

确保在 <NotBefore> 元素中指定的值采用支持的格式之一:

sortableRFC 1123RFC 850ANCI-C

如需更正“生成 JWT”政策示例,请修改 <NotBefore> 元素中的日期,以使用 sortable 格式,如下所示:

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <ExpiresIn>1h</ExpiresIn>
    <NotBefore>2018-08-14T11:00:21-07:00</NotBefore>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</GenerateJWT>