2011-10-26 337 views
7

So Apex tiene "espacios de trabajo", que le permiten crear usuarios de tres tipos, todos los cuales son internos de la organización en la naturaleza. Además, parece que no hay forma de que un desarrollador de un sitio individual en Apex tenga "usuarios" solo para su sitio.Roles de autorización y usuario en Oracle Apex?

¿Echo de menos algo?

Necesito poder tener usuarios externos (de negocios) para poder acceder a solo algunas características del sitio, por ejemplo, la contabilidad solo puede ver las páginas A y B mientras que los ejecutivos pueden ver A, B y C.

Necesito tener la capacidad de tener varios grupos de personas con diferentes grados de acceso.

¿Esto solo se puede hacer creando espacios de trabajo/grupos? ¿O se puede hacer internamente solo en mi sitio?

Respuesta

7

Aunque APEX tiene un concepto de administración de usuarios integrado llamado "Grupos", debo confesar que nunca lo he usado, y una lectura rápida de la documentación no me deja claro cómo los usa para controlar el acceso (pero vea Tom's answer aquí para eso).

Probablemente necesite crear tablas de usuario/rol dentro de su base de datos y utilizarlas junto con los esquemas de autorización APEX para controlar el acceso a las páginas. Un único sistema de autorización de tipo "función PL/SQL de regresar de Boole" podría ser creada con el cuerpo de la función:

return my_auth_pkg.is_authorized (p_user => :app_user, 
            p_app_id => :app_id 
            p_page_id => :app_page_id); 

A continuación, aplicar el paquete para buscar los privilegios del usuario y decidir si se debe devolver VERDADERO o FALSO para la aplicación y la identificación de la página. enter image description here

Alternativamente, usted podría simplemente realizar el SQL para comprobar si hay acceso directo en el régimen de autorización: enter image description here

("user_roles" NB y "role_pages" son nombres que hice arriba, para representar sus tablas)

+0

¿A dónde exactamente iría el código de la lista anterior? – antonpug

+0

Debería introducirlo en la propiedad "Cuerpo de función" del Esquema de autorización APEX al crearlo. –

+0

Ah bien. ¿Entonces también es allí donde crearía los controles para ver si mi tabla db contiene la información adecuada o no? – antonpug

6

Solo quiero expandir el Tony's answer, que por sí solo es correcto. Solo quiero mostrarte otra forma, que creo que sería más fácil para un principiante total y omite la creación de tablas.

Si su aplicación utiliza Apex como esquema de autenticación, sus usuarios se administrarán a través de la administración del espacio de trabajo. Puede crear, editar y eliminar usuarios, pero también puede definir grupos y vincular usuarios a grupos. Es posible crear varios tipos de usuarios de "usuario final" y definir un par de grupos, como "Ejecutivos".

Apex users and groups Creation of a group Cuando haya creado su grupo, vaya al usuario que desea asignar a este grupo, y añadir el grupo a los grupos de los que el usuario

Adding a group to a user

Una vez que tenga que configurar, aún necesita los esquemas de autorización. El hecho es que se necesita un poco de conocimiento pl/sql aquí, pero es posible mantener la codificación al mínimo, gracias a algunos prácticos api-work. Defining an authorization based on apex groups El current_user_in_group hace lo que dice: verifica para el usuario actual si tiene dicho grupo asignado. Con algunas expansiones usando algunas estructuras simples de IF, ¡puedes incrementarla un poco!

No es que recomiendo totalmente este método, me resulta un poco tedioso, y necesita a alguien que vaya a APEX para mantener realmente a los usuarios y sus grupos, pero podría ser que esto sea aceptable en su entorno . Sin embargo, podrías usarlo para comenzar. Puede cambiar fácilmente los esquemas de autenticación, y con la modificación de sus esquemas de autorización para que cumplan con el nuevo esquema de autenticación, puede ajustar esto fácil y rápidamente después. Depende de tus prioridades y objetivos, por supuesto.

+1

+1 ¡Genial, ahora sé cómo usar los grupos integrados! Miré los documentos apex_util antes de responder, pero no pude ver esa función. Solo una observación: su código en la expresión 1 se puede reducir a simplemente; 'return apex_util.current_user_in_group (p_group_name => 'Executives');' –

+0

Implementé su respuesta aquí Tom, y es seguro al restringir el acceso. De hecho, ya no puedo acceder a la página de inicio de sesión. XD ¿Cómo podría arreglar eso? Debo señalar que apliqué el esquema de autorización en el nivel de aplicación, no en el nivel de página. ¿Debo desactivar la autorización a nivel de aplicación y realmente revisar y limitar el acceso a cada página individualmente? – TraxusIV

+1

@TraxusIV Wow, lo siento por la respuesta tardía! Creo que esto podría estar relacionado con su versión Apex, y las versiones posteriores de Apex ya no deberían hacer esto (creo). Podría ser de 4.2 y más. Aparte de eso, sí, tendrá que asignar directamente. Sin embargo, no se preocupe, puede hacerlo de manera relativamente fácil yendo a Utilidades> seleccione utilidades de páginas cruzadas en la barra lateral derecha> edición de cuadrícula de todas las páginas. Puede cambiar el esquema de autorización allí, fácilmente, para todas sus páginas. ¡No te olvides de guardar! :) – Tom

0

La autorización es un proceso para determinar si una persona autenticada/identificada puede acceder a un recurso o realizar una operación. Se basa en un conjunto de privilegios o roles asignados al usuario. Por ejemplo, en la base de datos Oracle, el administrador tiene privilegios para programar trabajos, mientras que un usuario no puede. ¿En qué se diferencia la autorización de la autenticación? A menudo la Autenticación y Autorización funcionan juntas. En otras palabras, la Autorización sigue a la Autenticación. La autenticación determina ¿Quién es usted? La autorización determina ¿Qué se le permite hacer?

Cuestiones relacionadas