Solución de problemas de errores de implementación de políticas de BasicAuthentication

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

UserNameRequired

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 Deploying Revision revision_number to env_name
BasicAuthenticationPolicy: Username element must be present for operation operation.

Ejemplo de mensaje de error

Error Deploying Revision 2 to test
BasicAuthenticationPolicy: Username element must be present for Encode operation.

Captura de pantalla del ejemplo.

Causa

La implementación del proxy de API falla si el elemento <User> no está definido en la política de BasicAuthentication. El elemento <User> es obligatorio para las operaciones de codificación y decodificación.

Diagnóstico

  1. Examina todas las políticas de BasicAuthentication que se usan en el proxy de API. Si hay una política en la que no se especifica el elemento <User>, esa es la causa del error. El elemento <User> es obligatorio en la política de BasicAuthentication para las operaciones de codificación o decodificación.

    La política de ejemplo BasicAuthentication que se muestra a continuación se usa para la operación de codificación, pero no tiene definido el elemento <User>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="ApplyBasicAuthHeader">
      <DisplayName>ApplyBasicAuthHeader</DisplayName>
      <Operation>Encode</Operation>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <Password ref="BasicAuth.credentials.password"/>
      <AssignTo createNew="false">request.header.Authorization</AssignTo>
    </BasicAuthentication>
    

    La implementación falla con el siguiente error:

    BasicAuthenticationPolicy: Username element must be present for Encode operation.
    

Solución

Asegúrate de que el elemento <User> esté definido dentro de la política BasicAuthentication para la operación de decodificación.

Para corregir el ejemplo anterior, incluye el elemento <User> dentro de la política como se muestra a continuación:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BasicAuthentication name="ApplyBasicAuthHeader">
    <DisplayName>ApplyBasicAuthHeader</DisplayName>
    <Operation>Encode</Operation>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <User ref="BasicAuth.credentials.username"/>
    <Password ref="BasicAuth.credentials.password"/>
    <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

PasswordRequired

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 Deploying Revision revision_number to env_name
BasicAuthenticationPolicy: Password element must be present for operation operation.

Ejemplo de mensaje de error

Error Deploying Revision 2 to test
BasicAuthenticationPolicy: Password element must be present for Encode operation.

Captura de pantalla del ejemplo.

Causa

La implementación del proxy de API falla si el elemento <Password> no está definido en la política de BasicAuthentication. El elemento <Password> es obligatorio para las operaciones de codificación y decodificación.

Diagnóstico

  1. Examina todas las políticas de BasicAuthentication que se usan en el proxy de API. Si hay una política en la que el elemento <Password> no está definido, esa es la causa del error. El elemento <Password> es obligatorio en la política de BasicAuthentication para la operación de codificación o decodificación.

    La política de ejemplo BasicAuthentication que se muestra a continuación se usa para la operación de codificación, pero no tiene definido el elemento <Password>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="ApplyBasicAuthHeader">
      <DisplayName>ApplyBasicAuthHeader</DisplayName>
      <Operation>Encode</Operation>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <User ref="BasicAuth.credentials.username"/>
      <AssignTo createNew="false">request.header.Authorization</AssignTo>
    </BasicAuthentication>
    

    La implementación falla con el siguiente error:

    BasicAuthenticationPolicy: Password element must be present for Encode operation.
    

Solución

Asegúrate de que el elemento <Password> esté definido dentro de la política BasicAuthentication para la operación de decodificación.

Para corregir el ejemplo anterior, incluye el elemento <Password> dentro de la política como se muestra a continuación:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BasicAuthentication name="ApplyBasicAuthHeader">
    <DisplayName>ApplyBasicAuthHeader</DisplayName>
    <Operation>Encode</Operation>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <User ref="BasicAuth.credentials.username"/>
    <Password ref="BasicAuth.credentials.password"/>
    <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

AssignToRequired

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 Deploying Revision revision_number to env_name
BasicAuthenticationPolicy: AssignTo element must be present for operation operation.

Ejemplo de mensaje de error

Error Deploying Revision 2 to test
BasicAuthenticationPolicy: AssignTo element must be present for Encode operation.

Captura de pantalla del ejemplo.

Causa

La implementación del proxy de API falla si el elemento <AssignTo> no está definido en la política de BasicAuthentication. El elemento <AssignTo> es obligatorio para las operaciones de codificación y decodificación.

Diagnóstico

  1. Examina todas las políticas de BasicAuthentication que se usan en el proxy de API. Si hay una política en la que el elemento <AssignTo> no está definido, esa es la causa del error. El elemento <AssignTo> es obligatorio para definirse en la política de BasicAuthentication en las operaciones de codificación y decodificación.

    La política de ejemplo BasicAuthentication que se muestra a continuación se usa para la operación de codificación, pero no tiene definido el elemento <AssignTo>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="ApplyBasicAuthHeader">
      <DisplayName>ApplyBasicAuthHeader</DisplayName>
      <Operation>Encode</Operation>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <User ref="BasicAuth.credentials.username"/>
      <Password ref="BasicAuth.credentials.password"/>
    </BasicAuthentication>
    

    La implementación falla con el siguiente error:

    BasicAuthenticationPolicy: AssignTo element must be present for Encode operation.
    

Solución

Asegúrate de que el elemento <AssignTo> esté definido dentro de la política BasicAuthentication para la operación de decodificación.

Para corregir el ejemplo anterior, incluye el elemento <AssignTo> dentro de la política como se muestra a continuación:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BasicAuthentication name="ApplyBasicAuthHeader">
    <DisplayName>ApplyBasicAuthHeader</DisplayName>
    <Operation>Encode</Operation>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <User ref="BasicAuth.credentials.username"/>
    <Password ref="BasicAuth.credentials.password"/>
    <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

SourceRequired

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 Deploying Revision revision_number to env_name
BasicAuthenticationPolicy: Source element must be present for Decode operation.

Ejemplo de mensaje de error

Error Deploying Revision 2 to test
BasicAuthenticationPolicy: Source element must be present for Decode operation.

Captura de pantalla del ejemplo.

Causa

La implementación del proxy de API falla si el elemento <Source> no está definido en la política BasicAuthentication que se usa para la operación de decodificación. El elemento <Source> es obligatorio si <Operation> se especifica como Decode en la política BasicAuthentication.

Diagnóstico

  1. Examina todas las políticas de BasicAuthentication que se usan en el proxy de API. Si hay alguna política en la que el elemento <Source> no está definido y el elemento <Operation> se define como Decode, entonces esa es la causa del error. El elemento <Source> es obligatorio si <Operation> se especifica como Decode en la política BasicAuthentication.

    La política de ejemplo de BasicAuthentication que se muestra a continuación se usa para la operación Decode, pero no tiene el elemento <Source> definido:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="ApplyBasicAuthHeader">
      <DisplayName>ApplyBasicAuthHeader</DisplayName>
      <Operation>Decode</Operation>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <User ref="BasicAuth.credentials.username"/>
      <Password ref="BasicAuth.credentials.password"/>
      <AssignTo createNew="false">request.header.Authorization</AssignTo>
    </BasicAuthentication>
    

    La implementación falla con el siguiente error:

    BasicAuthenticationPolicy: Source element must be present for Decode operation.
    

Solución

Asegúrate de que se defina el elemento <Source> en la política de BasicAuthentication cuando se use para la operación Decode.

Para corregir el ejemplo anterior, incluye el elemento <Source> dentro de la política como se muestra a continuación:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BasicAuthentication name="ApplyBasicAuthHeader">
    <DisplayName>ApplyBasicAuthHeader</DisplayName>
    <Operation>Decode</Operation>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <User ref="BasicAuth.credentials.username"/>
    <Password ref="BasicAuth.credentials.password"/>
    <AssignTo createNew="false">request.header.Authorization</AssignTo>
    <Source>request.header.Authorization</Source>
</BasicAuthentication>