He estado atormentando mi cerebro y buscando en Google durante años sin encontrar una forma satisfactoria de manejar esto. Quiero escribir un buen servicio completamente RESTful para devolver recursos, pero los datos tienen permiso para leer (o escribir) variest por recurso en función de su función. Entonces, por ejemplo, un usuario puede ver su número de teléfono privado en su perfil, y también un administrador del sitio, pero otro no. Es posible que un visitante anónimo no pueda ver el nombre real de otro usuario, pero otros usuarios (y el administrador del sitio) podrían hacerlo. Existen alrededor de 4 o 5 niveles de acceso y reglas sobre qué atributos se pueden leer o escribir. La escritura con la que estoy contento ya que el cliente puede PONER los cambios y el servidor no está obligado a aceptarlos todos (o en absoluto), pero la lectura es mi problema.¿Cómo se representa el control de acceso a nivel de atributo RESTful?
<user>
<id>jimbob</id>
<real-name>Jim Roberts</real-name> <!-- only logged-in users should see this -->
<phone-number>+1 42424151</phone-number> <!-- only the user and admin users should see this -->
</user>
Quiero tener un recurso de perfil de usuario correctamente puede almacenar en caché que contiene todos los datos públicos, pero ¿cómo puedo modelar todas las cosas que sólo determinados usuarios puedan ver? Podría hasta 4 enlaces a información adicional, la mayoría de los cuales devolvería errores no autorizados para la mayoría de los usuarios, con cada enlace con la información adicional relacionada con un rol. Pero eso parece muy ineficiente y también vincula a los clientes con el concepto de rol, cuando anteriormente todo lo que necesitaban saber era usuarios. ¿Hay mejores ideas?
<user>
<id>...</id>
<link rel="more" href="extra-user-profile-data-for-logged-in-users"/>
<link rel="more" href="extra-user-profile-data-for-senior-users"/>
<link rel="more" href="extra-user-profile-data-for-admin-users"/>
<link rel="more" href="extra-user-profile-data-for-superadmin-users"/>
</user>
Tenga en cuenta - No estoy luchando con cualquiera de
- autenticación control de acceso
- a nivel de recursos
- Implementación del control de acceso o autorización en el lado del servidor
Estoy luchando con
- Cómo representar los recursos que en un sitio HTML "normal" parecerían diferentes a diferentes personas, de una manera verdaderamente RESTful.
Parece un problema muy común que todos deben tener, pero no encuentro nada en él. ¡Por favor ayuda!
Creo que es apropiado omitir los elementos XML que corresponden a las propiedades que el usuario no está autorizado a ver. Creo que eso concuerda con la cantidad de aplicaciones web basadas en roles que presentan datos en formularios HTML. – EJK
Sin embargo, hace que sea descartable ya que los datos públicos se mezclarían con algún subconjunto (desconocido) de datos restringidos en la misma representación (en caché). –
me parece un problema simple. 1. el usuario se autentica. 2. el usuario solicita un URI 3. el mecanismo de control de acceso que ha implementado inicia y atrapa la solicitud de URI. 4. el monitor de recursos crea una plantilla de los datos que se devolverán al usuario solicitante. esta plantilla actúa como un ticket de algún tipo. 5. El servicio cumple con la solicitud del usuario especificada por el URI en función de la plantilla que recibió del monitor de recursos. 6. El servicio devuelve el resultado al usuario. hmmmm – ultrajohn