Soluciona errores de la implementación de la política VerifyJWT

Estás viendo la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

InvalidNameForAdditionalClaim

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de nombre no válido para la reclamación adicional.

Causa

Este error se genera si el nombre del reclamo que se usa en el elemento secundario <Claim> del elemento <AdditionalClaims> es uno de los siguientes nombres registrados:

“kid”, “iss”, “sub”, “ud”, “iat”, “exp”, “nbf”, “jti”

Las reclamaciones registradas se especifican en RFC 7519.

Por ejemplo, usar el nombre de reclamación iss en el elemento <AdditionalClaims> dará como resultado este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre de la reclamación del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre de la reclamación es iss:

    Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
    
  2. Verifica que el nombre de la reclamación utilizado en el elemento <AdditionalClaims> en el archivo XML de la política VerifyJWT con errores coincida con el nombre identificado en el mensaje de error del paso 1. Por ejemplo, en la siguiente política, se especifica la reclamación como iss, que coincide con el contenido del mensaje de error:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name="iss"/>
        </AdditionalClaims>
    </VerifyJWT>
    
  3. Si el nombre de la reclamación que se usa en el elemento secundario <Claim> del elemento <AdditionalClaims> es uno de los siguientes nombres registrados:

    “kid”, “iss”, “sub”, “ud”, “iat”, “exp”, “nbf”, “jti”

    entonces esa es la causa del error.

    En el ejemplo de la política VerifyJWT anterior, el nombre <Claim> se especifica como iss en el elemento <AdditionalClaims>, lo que genera el error:

    Invalid name for additional claim : policy(JWT-Verify-RS256) claim(iss).
    

Solución

No uses ninguno de los nombres registrados “kid”, “iss”, “sub”, “aud”, “iat”, “exp”, “nbf” o “jti” en el elemento secundario <Claim> del elemento <AdditionalClaims>.

Para corregir el problema con la política VerifyJWT de ejemplo, cambia el nombre de la reclamación por status:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='status' type='string'>Development</Claim>
    </AdditionalClaims>
</VerifyJWT>

InvalidTypeForAdditionalClaim

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de tipo no válido para la reclamación adicional.

Causa

El tipo de reclamación usada en el elemento secundario <Claim> del elemento <AdditionalClaims> de la política de verificación de JWT no es uno de los siguientes tipos:

string (predeterminado) number, boolean, o map

Por ejemplo, se producirá un error si usas el tipo de reclamación integer en el elemento <AdditionalClaims>.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT, el nombre de la reclamación y el tipo del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256, el nombre de la reclamación es claim y el tipo es integer:.

    Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
    
  2. Verifica que el nombre de la reclamación y el tipo que se usa en el elemento <AdditionalClaims> en el archivo XML de la política VerifyJWT con errores coincidan con el nombre de la reclamación y el tipo identificados en el mensaje de error del paso 1. Por ejemplo, en la siguiente política, se especifica la reclamación como claim y el tipo como integer, que coincide con el contenido del mensaje de error:

    <VerifyJWT name="JWT-Verify-RS256">
      <DisplayName>JWT Verify RS256</DisplayName>
      <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
      <Audience>fans</Audience>
      <Id/>
      <AdditionalClaims>
          <Claim name='claim' ref='reqclaim' type='integer'/>
      </AdditionalClaims>
    </VerifyJWT>
    
  3. Si el tipo de reclamación que se usa en el elemento secundario <Claim> del elemento <AdditionalClaims> no es uno de los siguientes tipos:

    string (predeterminado) number, boolean, o map

    entonces esa es la causa del error.

    En el ejemplo de la política VerifyJWT anterior, el tipo <Claim> se especifica como integer en el elemento <AdditionalClaims>. Debido a que integer no es un tipo compatible, obtienes el siguiente error:

    Invalid type for additional claim : policy(JWT-Verify-RS256) claim(claim) type(integer).
    

Solución

Asegúrate de que solo se usen los tipos de datos string (predeterminado), number, boolean o map compatibles en el elemento secundario <Claim> del elemento <AdditionalClaims>.

Para corregir el ejemplo de la política VerifyJWT, cambia el tipo de reclamación a boolean:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</VerifyJWT>

MissingNameForAdditionalClaim

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de falta el nombre del atributo en la reclamación.

Causa

Si el nombre de la reclamación no se especifica en el elemento secundario <Claim> del elemento <AdditionalClaims> o <AdditionalHeaders>, se genera este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256:

    Error occurred while validation of bean JWT-Verify-RS256.xml. Reason: - Required attribute name is missing in Claim
    
  2. Examina el archivo XML de la política VerifyJWT con errores y verifica que falta el nombre de la reclamación en el elemento secundario <Claims> bajo el elemento <AdditionalClaims> o <AdditionalHeaders>. Por ejemplo, la siguiente política VerifyJWT no especifica el nombre de la reclamación en el elemento <AdditionalClaims>:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim ref='reqclaim' type='boolean'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    Debido a que el nombre <Claim> no se especifica en el elemento <AdditionalClaims>, recibirás el error:

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

Solución

Asegúrate de que el nombre de la reclamación siempre se especifique en el elemento secundario <Claim> del elemento <AdditionalClaims> o <AdditionalHeaders>.

Para corregir el ejemplo de la política VerifyJWT, especifica el nombre de la reclamación como se muestra a continuación:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalClaims>
</VerifyJWT>

InvalidNameForAdditionalHeader

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de nombre no válido para el encabezado adicional.

Causa

Si el nombre de la reclamación que se usa en el elemento secundario <Claim> del elemento <AdditionalHeaders> es uno de los siguientes encabezados JWT estándar, se produce este error:

alg o typ

Por ejemplo, si usas el nombre de la reclamación alg en el elemento <AdditionalHeaders> generará el error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del encabezado del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre del encabezado es alg:

    Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
    
  2. Verifica que el nombre del encabezado que se usa en el elemento secundario <Claim> en el elemento <AdditionalHeaders> en el archivo XML de la política VerifyJWT con errores coincida con el nombre del encabezado identificado en el mensaje de error del paso 1. Por ejemplo, en la siguiente política, se especifica el encabezado como alg, que coincide con el mensaje de error:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalHeaders>
            <Claim name="alg"/>
        </AdditionalHeaders>
    </VerifyJWT>
    
  3. Si el nombre del encabezado que se usa en el elemento secundario <Claim> del elemento <AdditionalClaims> es uno de los siguientes encabezados JWT estándar:

    alg o typ.

    entonces esa es la causa del error.

    En el ejemplo de la política VerifyJWT anterior, el nombre <Claim> se especifica como alg en el elemento <AdditionalClaims>, lo que genera el error:

    Invalid name for additional header: policy(JWT-Verify-RS256) header(alg).
    

Solución

No uses los encabezados JWT estándar alg o typ en el elemento secundario <Claim> del elemento <AdditionalHeaders>.

Para corregir la política VerifyJWT de ejemplo, usa el nombre x5c en el elemento secundario <Claim> del elemento <AdditionalHeaders>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='x5c'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidTypeForAdditionalHeader

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de tipo no válido para el encabezado adicional.

Causa

El error se producirá si el tipo de reclamación usada en el elemento secundario <Claim> del elemento <AdditionalHeaders> de la política VerifyJWT no es uno de los siguientes tipos:

string (predeterminado) number, boolean, o map

Por ejemplo, se producirá el error si usas el tipo de reclamación integer en el elemento <AdditionalHeaders>.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT, el nombre de la reclamación y el tipo del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256, el nombre de la reclamación es claim y el tipo es integer.

    Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
    
  2. Verifica que el nombre de la reclamación y el tipo que se usa en el elemento <AdditionalClaims> en el archivo XML de la política VerifyJWT con errores coincidan con el nombre de la reclamación y el tipo identificados en el mensaje de error del paso 1. Por ejemplo, en la siguiente política se especifica la reclamación como claim y el tipo de reclamación como integer,, que coincide con el contenido del mensaje de error:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalHeaders>
            <Claim name='claim' ref='reqclaim' type='integer'/>
        </AdditionalHeaders>
    </VerifyJWT>
    
  3. Si el tipo de reclamación que se usa en el elemento secundario <Claim> del elemento <AdditionalHeaders> no es uno de los siguientes tipos:

    string (predeterminado) number, boolean, o map

    entonces esa es la causa del error.

    En la política VerifyJWT de ejemplo anterior, el tipo <Claim> en el elemento <AdditionalHeaders> se especifica como integer. Debido a que integer no es un tipo compatible, obtienes el siguiente error:

    Invalid type for additional header : policy(JWT-Verify-RS256) claim(claim) type(integer).
    

Solución

Asegúrate de que solo se usen los tipos de datos compatibles con string, number, boolean o map en el elemento secundario <Claim> del elemento <AdditionalHeaders>.

Para corregir el ejemplo de la política VerifyJWT, cambia el tipo de reclamación a boolean:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='boolean'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidValueOfArrayAttribute

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de valor no válido para el atributo de arreglo.

Causa

Este error se genera si el valor del atributo del arreglo del elemento secundario <Claim> del elemento <AdditionalClaims> o <AdditionalHeaders> no está configurado como true ni false.

Por ejemplo, se produce el error, si configuras el valor del atributo del arreglo como yes en el elemento secundario <Claim> del elemento <AdditionalClaims> o <AdditionalHeaders>.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre de la reclamación del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre de la reclamación es claim:

    Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
    
  2. Verifica que el nombre de la reclamación utilizado en el elemento secundario <Claim> dentro del elemento <AdditionalHeaders> en el archivo XML de la política VerifyJWT con errores coincida con el nombre de la reclamación identificado en el mensaje de error del paso 1. Por ejemplo, en la siguiente política, se especifica el nombre de la reclamación como claim, que coincide con el contenido del mensaje de error:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='yes'/>
        </AdditionalClaims>
    </VerifyJWT>
    
  3. Si el valor del atributo array en el elemento secundario <Claim> del elemento <AdditionalClaims> no está configurado como true ni false, entonces esa es la causa del error.

    Debido a que el atributo array en el elemento secundario <Claim> del elemento <AdditionalClaims> se configura como yes en el ejemplo anterior, obtendrás el siguiente error:

    Invalid value for array attribute: policy(JWT-Verify-RS256) claim(claim).
    

Solución

Asegúrate de que el valor del atributo del arreglo del elemento secundario <Claim> de los elementos <AdditionalClaims> o <AdditionalHeaders> esté establecido en true o false.

Para corregir la política VerifyJWT de ejemplo anterior, cambia el valor del atributo del arreglo por true:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidValueForElement

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

Error Saving Revision
Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de valor no válido para el elemento.

Causa

Este error se genera si el valor especificado en el elemento <Algorithm> no es uno de los siguientes valores:

HS256, HS384, HS512, RS256, RS384, RS512

Por ejemplo, si especificas el valor del algoritmo como RS128 en el elemento <Algorithm> genera este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del elemento del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre del elemento es Algorithm:

    Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
    
  2. Examina el archivo XML de la política VerifyJWT con errores y verifica el valor especificado para el elemento <Algorithm>.

    A continuación, puedes ver una política VerifyJWT de muestra:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS128</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-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='status' type='string'>Development</Claim>
        </AdditionalClaims>
    </VerifyJWT>
    
  3. Examina el valor especificado en el elemento <Algorithm>. Si no es uno de los siguientes valores:

    HS256, HS384, HS512, RS256, RS384, RS512

    entonces esa es la causa del error.

    En el ejemplo de política VerifyJWT anterior, el nombre <Algorithm> se especifica como HS128. Debido a que este no es un algoritmo compatible, verás el siguiente error:

    Invalid Value for element : policy(JWT-Verify-RS256) element(Algorithm).
    

Solución

Asegúrate de que el valor especificado en el elemento <Algorithm> sea uno de los valores admitidos:

HS256, HS384, HS512, RS256, RS384, RS512

Para corregir la política VerifyJWT de ejemplo que se muestra arriba, que usa el elemento <SecretKey>, cambia el valor de <Algorithm> a HS25. Ten en cuenta que, cuando se usa el elemento <SecretKey>, solo puedes usar la familia de algoritmos HS.

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</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-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name='status' type='string'>Development</Claim>
    </AdditionalClaims>
</VerifyJWT>

MissingConfigurationElement

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

Error Saving Revision
Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de falta el elemento de configuración.

Causa

Este error ocurre cuando el elemento <PublicKey> no se usa con los algoritmos de la familia RSA en la política VerifyJWT. Del mismo modo, el error puede ocurrir si el elemento <SecretKey> no se utiliza con los algoritmos de la familia HS en la política VerifyJWT.

Por ejemplo, si no usas el elemento <PublicKey> con la familia de algoritmos RSA, se produce este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del elemento faltante del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre del elemento faltante es PublicKey:

    Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
    
  2. Examina el archivo XML de la política VerifyJWT con errores y verifica si falta el elemento indicado en el mensaje de error. Si falta, entonces esa es la causa del error.

    Por ejemplo, en la siguiente política, se muestra que falta el PublicKey y el Algorithm que se usa es RS256:

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

    La política VerifyJWT de ejemplo usa la familia de algoritmos HS, pero falta el elemento obligatorio PublicKey, lo que genera el siguiente error:

    Missing configuration element : policy(JWT-Verify-RS256) element(PublicKey).
    

Solución

Asegúrate de que el elemento obligatorio <PublicKey> se use con la familia de algoritmos RSA y el elemento obligatorio <SecretKey> con la familia de algoritmos HS.

Para corregir la política VerifyJWT de ejemplo anterior, que usa el algoritmo RS256, agrega el elemento <PublicKey> a la política VerifyJWT:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Algorithm>RS256</Algorithm>
    <PublicKey>
      <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidKeyConfiguration

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

Error Saving Revision 2
Invalid Key configuration : policy(JWT-Verify-RS256).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de configuración de clave no válida.

Causa

Este error se produce si el elemento secundario <Value> o el elemento secundario obligatorio <JWKS> no están definidos en los elementos <PublicKey> o <SecretKey> de la política VerifyJWT.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256:

    Invalid Key configuration : policy(JWT-Verify-RS256).
    
    
  2. Examina los archivos XML de la política Verificar JWT y verifica si el elemento secundario <Value> o <JWKS> no están definidos en los elementos <PublicKey> o <SecretKey>. Si el elemento secundario no está definido, esa es la causa del error.

    Por ejemplo, en la siguiente política muestra que el elemento secundario <Value> o <JWKS> no está definido en el elemento <PublicKey>:

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

    Debido a que el elemento secundario <Value> o <JWKS> no está definido en el elemento <PublicKey> de la política VerifyJWT, verás el error:

    Invalid Key configuration : policy(JWT-Verify-RS256).
    

Solución

Asegúrate de que el elemento secundario <Value> o <JWKS> siempre se defina en el elemento <PublicKey> de la política VerifyJWT.

Para corregir la política VerifyJWT de ejemplo, define el elemento secundario <Value> o <JWKS> en el elemento <PublicKey> como se muestra a continuación:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</PublicJWT>

EmptyElementForKeyConfiguration

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

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

Ejemplo de mensaje de error

Error Saving Revision 2
Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de elemento vacío para la configuración de la clave.

Causa

Este error ocurre si el atributo ref en el elemento secundario <Value> o <JWKS> del elemento <PublicKey> no está especificado o está vacío.

Por ejemplo, se produce el error si el elemento secundario <Value> del elemento <PublicKey> está vacío.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del elemento que está vacío en el mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre del elemento es PublicKey/Value:

    Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
    
  2. Examine el archivo XML de la política VerifyJWT con errores y verifique que el elemento identificado en el paso 1 esté vacío. Si está vacío, esa es la causa del error.

    Por ejemplo, la siguiente política muestra que el elemento secundario <Value> del elemento <PublicKey> está vacío:

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

    Debido a que el elemento secundario <Value> del elemento <PublicKey> de la política VerifyJWT está vacío, obtienes el siguiente error:

    Empty Element for Key Configuration : policy(JWT-Verify-RS256) element(PublicKey/Value).
    
    

Solución

Asegúrate de que siempre se especifique el atributo ref en el elemento secundario <Value> o <JWKS> del elemento <PublicKey>.

Para corregir la política VerifyJWT de ejemplo, usa la variable de flujo public.publickey en el elemento secundario <Value> del elemento <PublicKey>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidConfigurationForVerify

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

Error Saving Revision revision_number
Invalid configuration element for verify : policy(policy_name) element(element_name).

Ejemplo de mensaje de error

Error Saving Revision 3
Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de elemento de configuración no válido para la verificación.

Causa

Este error se produce si el elemento <Id> se define dentro del elemento <SecretKey> de una política VerifyJWT.

Por ejemplo, si el elemento <Id> se define en el elemento <SecretKey>, se produce este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del elemento no válido del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre del elemento es SecretKey/Id:

    Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
    
  2. Examine el archivo XML de la política VerifyJWT con errores y verifique que el elemento no válido identificado en el paso 1 esté definido. Si está definido, esa es la causa del error.

    Por ejemplo, la siguiente política muestra que el elemento secundario <Id> del elemento <SecretKey> está definido:

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

    Debido a que el elemento <Id> se define en el elemento <SecretKey> de la política VerifyJWT, verás el siguiente error:

    Invalid configuration element for verify : policy(JWT-Verify-HS256) element(SecretKey/Id)
    

Solución

Asegúrate de que el elemento <Id> nunca esté definido dentro del elemento <SecretKey> de una política VerifyJWT.

Para corregir la política VerifyJWT de ejemplo, quita el elemento secundario <Id> del elemento <SecretKey>:

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

InvalidEmptyElement

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

Error Saving Revision 
Invalid empty element : policy(policy_name) element(element_name).

Ejemplo de mensaje de error

Error Saving Revision 3
Invalid empty element : policy(JWT-Verify-HS256) element(Source).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error del elemento vacío no válido.

Causa

Este error se produce si el elemento <Source> de la política Verificar JWT está vacío. Si está presente, debe definirse con un nombre de variable de flujo.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del elemento vacío del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el nombre del elemento es PublicKey/Value:

    Invalid empty element : policy(JWT-Verify-HS256) element(Source).
    
  2. Examine el archivo XML de la política VerifyJWT con errores y verifique que el elemento identificado en el paso 1 esté vacío. Si está vacío, esa es la causa del error.

    Por ejemplo, en la siguiente política, se muestra que el elemento <Source> está vacío:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <ExpiresIn>1h</ExpiresIn>
        <Source></Source>
        <PublicKey>
            <Value ref="public.publickey"/>
        </PublicKey>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
        <AdditionalClaims>
            <Claim name='claim' ref='reqclaim' type='string' array='true'/>
        </AdditionalClaims>
    </VerifyJWT>
    

    Debido a que el elemento <Source> de la política VerifyJWT está vacío, obtienes el siguiente error:

    Invalid empty element : policy(JWT-Verify-HS256) element(Source).
    

Solución

Si el elemento <Source> de una política VerifyJWT está presente, asegúrate de que especifique una variable de flujo.

Para corregir la política VerifyJWT de ejemplo, usa una variable de flujo válida en el elemento <Source>:

<VerifyJWT name="JWT-Verify-RS256">
    <DisplayName>JWT Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>jwt-variable</Source>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalHeaders>
        <Claim name='claim' ref='reqclaim' type='string' array='true'/>
    </AdditionalHeaders>
</VerifyJWT>

InvalidPublicKeyValue

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

Error Saving Revision revision_number
Invalid Public Key Value in Configuration : policy(policy_name) element(element_name).

Ejemplo de mensaje de error

Error Saving Revision 2
Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de valor de clave pública no válido en la configuración.

Causa

Este error ocurre si el valor que se usa en el elemento secundario <JWKS> del elemento <PublicKey> no tiene un formato válido, como se especifica en RFC 7517.

Por ejemplo, usar abc como valor del elemento secundario <JWKS> del elemento <PublicKey> generará este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT y el nombre del elemento que contiene un valor no válido del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-RS256 y el elemento es PublicKey/JWKS:

    Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
    
  2. Examina el archivo XML de la política Verificar JWT y verifica que el elemento identificado en el paso 1 contenga un valor en un formato válido, según se establece en RFC 5717. Si el valor del elemento no tiene un formato válido, es la causa del error.

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <PublicKey>
            <JWKS>abc<JWKS>
        </PublicKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
    </VerifyJWT>
    

    Dado que el valor del elemento secundario <JWKS> del elemento <PublicKey> no tiene un formato válido según RFC 7517, verás el siguiente error:

    Invalid Public Key Value in Configuration : policy(JWT-Verify-RS256) element(PublicKey/JWKS).
    

Solución

Asegúrate de que el valor especificado en el elemento secundario <JWKS> del elemento <PublicKey> sea una string válida o una variable de flujo en un formato JWKS válido (RFC 7517).

Para corregir la política VerifyJWT de ejemplo, cambia el valor de <JWKS> como se muestra a continuación:

    <VerifyJWT name="JWT-Verify-RS256">
        <DisplayName>JWT Verify RS256</DisplayName>
        <Algorithm>RS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <PublicKey>
        <JWKS>eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM</JWKS>
        </PublicKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
        <Id/>
    </VerifyJWT>

InvalidConfigurationForActionAndAlgorithm

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con este mensaje de error:

Error Saving Revision <var>revision_number</var>
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>).

Ejemplo de mensaje de error

Error Saving Revision
Invalid configuration element for this action and algorithm Family: policy(JWT-Verify-HS256) element(PublicKey) action(Verify) family(RSA).

Captura de pantalla de ejemplo

En la IU de Apigee, verás un cuadro de diálogo con un error:

Mensaje de error de elemento de configuración no válido para esta acción y este algoritmo.

Causa

Este error se genera si el elemento <PublicKey> se usa con la familia de algoritmos HS y el elemento <SecretKey> se usa con la familia de algoritmos RSA. El error también se generará si cualquiera de estas condiciones es verdadera.

Por ejemplo, si usas el elemento <PublicKey> con familias de algoritmos HS, se genera este error.

Diagnóstico

  1. Identifica el nombre de la política VerifyJWT, el nombre del elemento y el nombre de la familia de algoritmos del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política VerifyJWT es JWT-Verify-HS256, el nombre del elemento es PublicKey y la familia de algoritmos es RSA:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Verify-HS256) element(PublicKey) action(Verify) family(RSA).
    
  2. Verifica que el elemento y la familia de algoritmos que se usa en el archivo XML de la política VerifyJWT con errores coincidan con el elemento y la familia de algoritmos identificados en el mensaje de error del paso 1. Por ejemplo, la siguiente política especifica el elemento como PublicKey y la familia de algoritmos como HMAC, que coincide con el contenido del mensaje de error

    <VerifyJWT name="JWT-Verify-HS256">
        <DisplayName>JWT Verify HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Source>request.formparam.jwt</Source>
        <PublicKey>
            <Value ref="var-value"/>
        </PublicKey>
        <SecretKey>
            <Value ref="private.secretkey"/>
        </SecretKey>
            <ExpiresIn>1h</ExpiresIn>
            <Subject>monty-pythons-flying-circus</Subject>
            <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
            <Audience>fans</Audience>
        </VerifyJWT>
    
  3. Si el valor del elemento <Algorithm> es HS256, pero usaste <PublicKey>, entonces esa es la causa del error.

    En la política VerifyJWT de ejemplo anterior, se usa el elemento <PublicKey>, aunque <Algorithm> se configure como un algoritmo familiar HS256, lo que genera el error:

    Invalid configuration element for this action and algorithm Family: policy(JWT-Verify-HS256) element(PublicKey) action(Verify) family(RSA).
    

Solución

Asegúrate de que el elemento <PublicKey> se use solo con la familia de algoritmos RSA y que el elemento <SecretKey> se use solo con algoritmos de la familia HS.

Para corregir la política VerifyJWT de ejemplo, usa la <SecretKey> de la política VerifyJWT que usa el algoritmo HS256:

    <VerifyJWT name="JWT-Verify-HS256">
        <DisplayName>JWT Verify HS256</DisplayName>
        <Algorithm>HS256</Algorithm>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Source>request.formparam.jwt</Source>
        <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
        <ExpiresIn>1h</ExpiresIn>
        <Subject>monty-pythons-flying-circus</Subject>
        <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
        <Audience>fans</Audience>
    </VerifyJWT>