wso2 wso2is wso2-am

No se puede publicar la política XACML en el administrador de aplicaciones wso2 y lanzar la excepción NoSuchMethodError



wso2is wso2-am (2)

Esto no es un error con la política XACML. De acuerdo con el error, dice claramente que java.lang.NoSuchMethodError: org.wso2.carbon.identity.entitlement.stub.EntitlementPolicyAdminServiceStub.publishPolicies([Ljavag;Ljava/lang/String;ZI)V

Entonces, este es un problema con la API del servicio web a la que llamas. Significa que probablemente haya un cambio de API en la API del servicio web y que algún componente siga llamando a la API anterior. Como ha instalado las funciones de XACML en el administrador de API, es posible que haya instalado alguna versión anterior de las características de XACML. Sin embargo, ¿podría verificar si hay dos versiones del siguiente archivo jar en el sistema?

  1. Puede ir al <APIM_HOME>/repository/components/plugin y buscar el nombre.

org.wso2.carbon.identity.entitlement.stub

  1. Si hay dos archivos jar, elimine el archivo jar uno (digamos versión anterior)

  2. Elimine la entrada OSGI para ese archivo jar en el archivo bundle.info que se puede encontrar en el <APIM_HOME>repository/components/default/configuration/org.eclipse.equinox.simpleconfigurator

  3. Reinicia el servidor y prueba tu operación.

  4. Si no funcionó, elimine otro archivo jar y agregue el archivo jar anterior y también recuerde agregar una nueva entrada eliminada al archivo anterior mencionado en el paso 3

Esta no es la forma correcta de resolver esto. Supongo que lo mejor es que puede volver a instalar las características de XACML buscando el repositorio de P2 correcto para la versión de APIM que está utilizando. Puedes encontrarlo desde aquí

Seguí los pasos proporcionados por los enlaces a continuación para crear una política en el administrador de aplicaciones wso2 y publshing

http://wso2.com/library/articles/2014/02/use-of-wso2-api-manager-to-validate-fine-grained-policy-decisions-using-xacml/

Después de crear la Política XACML intentando publicarlo en PDP, obteniendo el siguiente error

[2014-09-15 15:52:53,007] ERROR - ApplicationDispatcher Servlet.service() for servlet bridgeservlet threw exception java.lang.NoSuchMethodError: org.wso2.carbon.identity.entitlement.stub.EntitlementPolicyAdminServiceStub.publishPolicies([Ljava g;Ljava/lang/String;ZI)V at org.wso2.carbon.identity.entitlement.ui.client.EntitlementPolicyAdminServiceClient.publish(EntitlementPolicyAdminSer at org.apache.jsp.entitlement.publish_002dfinish_jsp._jspService(org.apache.jsp.entitlement.publish_002dfinish_jsp:133) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155) at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)

Quiero integrar las políticas XACML en WSO2 APIM. Y a continuación está la política de XACML que quiero publicar en el administrador de wso2 api.

<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="TestPolicy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable" Version="1.0"> <Target> <AnyOf> <AllOf> <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">foo</AttributeValue> <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> </Match> </AllOf> </AnyOf> </Target> <Rule Effect="Permit" RuleId="Rule-1"> <Target> <AnyOf> <AllOf> <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">GET</AttributeValue> <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> </Match> </AllOf> </AnyOf> </Target> <Condition> <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of"> <Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal"/> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">test</AttributeValue> <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> </Apply> </Condition> </Rule> <Rule Effect="Deny" RuleId="Deny-Rule"/> </Policy>


Esto se debe a que ha instalado una versión de función incorrecta de XACML y el mediador XACML. Por favor, desinstale nuevamente las características usando la consola de administración y vuelva a instalar la versión correcta.

Ejemplo: si usa WSO2 APIM 1.7

  • Mediador XACML 4.2.2
  • XACML 4.2.1

son las versiones correctas que debes seleccionar Puedes averiguarlo usando esta tabla .

Referencia: https://wso2.org/jira/browse/APIMANAGER-3106