Resumen

  • El servicio de RFC 3341 escogía la entrada coincidente más específica; al borrar una regla exacta podía quedar activa una concesión comodín más general.
  • Para negar todo era necesario conservar la entrada exacta con all:none; eliminación, acuse, aviso al propietario, decisión efectiva y enforcement eran hechos separados.

El ejemplo combina una regla exacta para un actor y otra aplicable a todo su dominio. La primera permite enviar datos, suscribirse a presencia y observarla. La segunda solo permite enviar datos. Eliminar la regla exacta quita dos capacidades, pero la transmisión de datos sigue autorizada por la regla amplia.

No hubo necesariamente error de escritura. La fila se borró como se pidió. Lo que cambió fue el conjunto de candidatos: al faltar el ganador exacto, el patrón general ocupó su lugar. Si se quería impedir toda acción, la especificación indicaba sustituir la entrada exacta por all:none. El rechazo seguía presente y, por ser más específico, evitaba heredar la concesión general.

La autorización era un resultado calculado

Cada entrada incluía owner, actor, acciones y un lastUpdate producido por el servicio. El owner era el punto final o subdirección cuya política se describía. El actor era la entidad o grupo favorecido. Las acciones unían servicio y operación; core:data era el permiso consultado para enviar datos por la malla al owner.

El actor admitía comodines limitados en la parte local y en el dominio. Una dirección concreta podía coincidir con varias entradas. El algoritmo filtraba por owner y coincidencia, ordenaba primero por exactitud del dominio y después por exactitud local. La coincidencia exacta era mejor; entre patrones, ganaba el comodín más corto y específico.

Por eso el permiso no reside en una sola fila. Depende del conjunto, la precedencia y la acción preguntada. Un registro de auditoría que muestra la desaparición de una entrada prueba un estado de almacenamiento, no la denegación que producirá la siguiente consulta.

También existían entradas predeterminadas. El owner y los servicios APEX del mismo dominio recibían permisos amplios; los servicios APEX de cualquier dominio recibían datos del core; los demás actores globales recibían all:none. Una entrada explícita anulaba solo el valor predeterminado con exactamente el mismo actor. Los defaults formaban parte de la política efectiva aunque no aparecieran como filas creadas por un administrador.

La ausencia abría el camino de respaldo

La eliminación se solicitaba con un set que llevaba owner, actor y la versión vigente, pero no actions. El servicio quitaba la entrada, respondía al originador y enviaba por separado al owner una notificación set sin acciones. El acuse de la mutación y la noticia al propietario eran mensajes distintos.

Inmediatamente después, RFC 3341 advierte que el soporte de comodines puede hacer que borrar modifique el permiso en vez de eliminarlo. all:none significa ninguna operación. Al conservarlo en la entrada exacta, la búsqueda termina allí y no cae a la concesión amplia.

Es información negativa que necesita almacenamiento. No tener excepción significa seguir la regla general; tener una excepción de denegación significa impedirla. Si un proceso de limpieza elimina el rechazo porque parece un registro vacío, el acceso resucita sin que nadie añada un nuevo grant.

Control de versión sin prueba de convergencia

Antes de modificar, la aplicación obtenía la entrada y su lastUpdate. El reemplazo o borrado debía repetir ese valor. Si ya no existía la entrada exacta o el valor no era semánticamente idéntico al actual, el servicio respondía con 555. Para crear una entrada nueva se omitía lastUpdate.

La comparación evitaba sobreescribir cambios posteriores a la lectura. Tras crear o actualizar, el servicio asignaba su hora actual, que debía diferir del valor reemplazado.

El control cerraba una carrera de escritura, no toda la revocación. No probaba que el owner recibiera el aviso, que cada réplica viera la nueva regla o que el punto de enforcement negara la acción. La cadena completa contiene lectura y versión, solicitud, aceptación o conflicto, nuevo estado, aviso emitido, aviso entregado, decisión recalculada, propagación y prueba operativa.

Preguntar también requería autorización

Para una consulta, el servicio verificaba que el subject perteneciera al dominio y fuera válido. Luego elegía la entrada del subject que coincidía con el originador de la consulta y exigía access:query. Solo entonces seleccionaba la entrada correspondiente al actor examinado y comprobaba que todas las acciones solicitadas estuvieran presentes.

Quien pregunta y sobre quien se pregunta son sujetos diferentes. Poder consultar no equivale a poder ejecutar. Una respuesta allow tampoco certifica que una operación posterior usará la misma versión ni que llegará a su resultado final.

Las entradas debían mantenerse en almacenamiento persistente incluso si el owner no estaba conectado a la malla. Desconexión no significaba revocación. Persistencia preservaba el estado más allá de la presencia, pero no era por sí sola prueba de réplica, frescura o enforcement.

El resultado histórico

RFC 3341 se publicó en julio de 2002 dentro de Standards Track, junto con el núcleo, las opciones y la presencia de APEX. El historial IETF del 29 de julio de 2012 explica la reclasificación de RFC 3340 a RFC 3343 como Historic: según el conocimiento del IETF no había implementaciones desplegadas y las funciones las ofrecía XMPP, ampliamente desplegado y definido en RFC 6120 y RFC 6121.

La nota no presenta el modelo de comodines como causa y no documenta un incidente. Fija una conclusión de adopción con límites. La lección probatoria sigue intacta: quitar el objeto, revocar el derecho y hacer cumplir la prohibición no son sinónimos.

Un sistema actual puede usar esa distinción sin afirmar que implementa APEX. Debe registrar los candidatos y la versión del algoritmo, preservar denegaciones con significado de precedencia, leer el resultado efectivo y probar el punto de aplicación. El recibo de cambio muestra qué aceptó el servicio. El recibo de revocación muestra qué dejó de poder hacer el actor.

Fuentes