Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

484
Views
Cómo implementar el control de acceso basado en atributos (ABAC) en PHP

Acabo de encontrar un marco de AT&T para construir ABAC.

Este marco utiliza XACML siguiendo el formato XML para crear reglas. Pero este marco solo se implementa para Java.

Sin embargo, estoy trabajando con PHP y estoy usando JSON para escribir reglas.

¿Es correcta mi solución? ¿Puede sugerir algunos marcos o soluciones compatibles con PHP?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Para completar la respuesta de David con respecto a AuthzForce : es de código abierto, compatible con XACML 3.0 y proporciona tanto una API Java (AuthzForce Core) como una API REST para PAP y PDP. Entonces podría usar la API REST de su programa PHP. La API es compatible con los formatos XML y JSON para las interfaces PAP y PDP. Sin embargo, no estamos usando el perfil JSON de XACML para PDP. En cambio, para toda la API, usamos la convención mapeada proporcionada por Apache CXF . Dicha convención permite la traducción automática de XML (más precisamente, el modelo interno derivado de XML utilizado en el código de implementación) a JSON y viceversa automáticamente.

EDITAR (2018-02-26): AuthzForce Core y Server ahora admiten el perfil JSON estándar de XACML para el PDP. AuthzForce también proporciona un PDP RESTful mínimo basado en Core, ya sea empaquetado como una aplicación Spring-boot o simplemente la implementación de JAX-RS para su reutilización en cualquier marco JAX-RS.

about 4 years ago · Santiago Trujillo Report

0

El marco de AT&T fue un marco de investigación y desarrollo diseñado por AT&T hace algunos años y luego lanzado a Apache. Según github , todavía está activo. No estoy al tanto de ningún uso comercial del producto (aunque sospecho que AT&T lo usa).

Los tres marcos principales utilizados por ahí son:

  • Balana WSO2. Este es un PDP Java de código abierto. También se incluye como parte de WSO2 Identity Server. La mayoría de los usuarios de código abierto utilizan Balana.
  • SunXACML: esta es la implementación original de XACML 3.0. Es bastante viejo pero resistente (ha existido durante 10 años más o menos). También es de código abierto y Java.
  • Servidor de políticas Axiomatics . Esta es una solución comercial (descargo de responsabilidad: trabajo para Axiomatics). Es la solución comercial más frecuente que existe. También está implementado en Java, pero también admite la integración para PHP.

Puede encontrar esta información en la página de wikipedia de XACML . Hay otro motor interesante llamado AuthZForce pero tengo poca experiencia con él.

Todos estos motores, AFAIK, usan el formato XML de XACML para almacenar políticas. Usted afirma que necesita JSON. No hay un perfil de política de XACML en JSON. Hubo una pregunta sobre el tema que puedes leer aquí .

Dado que Axiomatics Policy Server está expuesto como una API JSON, puede usarlo para integrarse con PHP. Otros motores probablemente tengan un enfoque similar. Si utiliza Amazon AWS, puede solicitar una copia de la AMI del servidor de políticas de Axiomatics .

ABAC es tecnológicamente neutral, lo que significa que no es específico de Java, Ruby, .NET, PHP o cualquier otro lenguaje. En qué está escrito el motor PDP es irrelevante para en qué está escrita su aplicación, siempre que pueda integrar los dos juntos.

Espero que esto ayude, David.

about 4 years ago · Santiago Trujillo Report

0

El componente de control de acceso TYPO3 implementa ABAC y admite un lenguaje de política de control de acceso simple pero expresivo basado en Jiang, Hao y Bouabdallah, Ahmed (2017) y está escrito en PHP.

Consulte el esquema JSON para obtener una impresión rápida sobre el lenguaje de la política de control de acceso. El componente es delgado y flexible. No se opina sobre el formato ni sobre el lenguaje de expresión del lenguaje de la política. Por ejemplo, podrías usar el lenguaje de expresión YAML y Symfony . Como tal política podría verse así:

 description: 'Root policy set.' algorithm: highestPriority policies: Admin: target: 'hasAuthority("typo3:security:principal:admin")' description: 'Administrator policy' priority: 100 rules: - effect: permit Default: description: 'Deny everything per default.' rules: - obligation: deny: Feedback: ['Access denied.']
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!