¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo ejecutar un Message Driven Bean en un rol específico con la anotación @RunAs y ejb-j2ee-engine.xml

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Cargando...

Hola,

Estoy tratando de ejecutar un Message Driven Bean en un rol específico. Pensé que la anotación @RunAs haría el trabajo, pero no puedo hacer que funcione.

En mi código fuente puse:

@RunAs("myadmin")

En el ejb-j2ee-engine.xml puse lo siguiente:


  <security-permission>
    <security-role-map>
      <role-name>myadmin</role-name>
      <server-role-name>Administrator</server-role-name>
   </security-role-map>
</security-permission>

Cuando despliego obtengo la 'advertencia':

Advertencia ocurrida en el servidor 7820350 durante la actualización sap.com/TEST_EAR : EJB Model Builder: J2EE Security role myadmin está mapeado a server role(roles) en el xml adicional pero no puede ser encontrado en la etiqueta de security-role del ejb-jar.xml., archivo: MyProject.jar#MyProject.jar, columna 0, línea 0, severidad: advertencia

¿Por qué necesito un ejb-jar.xml? ¿Pensé que ya no era necesario con J2EE 5? Y cuando creo uno, obtengo errores al insertar una etiqueta llamada "<security-role>".

Revisé la ayuda [aquí|http://help.sap.com/saphelp_nwce10/helpdata/en/46/3079bf50094f09e10000000a114a6b/frameset.htm], pero no fue de gran ayuda la mayoría de las veces...

Entonces, ¿cómo puedo ejecutar un Message Driven Bean como un Rol que defino en el UME como "Administrator"? ¿O cuál es el significado de "server-role-name"? Todo este concepto de roles de seguridad UME y J2EE es un poco confuso para mí, para ser honesto

Cualquier ayuda sería apreciada,

Gracias Frank

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

finalmente logré que funcionara Creé un rol (UME) en mi servidor 7.10, le di a ese rol los derechos de acceso requeridos (como acciones UME).

Luego creé un usuario 'miUsuario' que tiene este rol...

Y creé una entrada en ejb-j2ee-engine.xml para mi bean:


      <run-as-identity-map>
        <user-name>miUsuario</user-name>
      </run-as-identity-map>

y creé los permisos de seguridad según lo indicado en la página de ayuda.

También necesité agregar un ejb-jar.xml con:


<assembly-descriptor>
		<security-role>
			<role-name>mirol</role-name>
		</security-role>
</assembly-descriptor>

Como no he descubierto cuándo es un rol J2EE y cuándo es un rol UME, los nombré igual Después de eso puedo ver en los registros que mi MDB se está ejecutando con el usuario 'miUsuario'.

Espero que esta explicación breve pueda ayudar a otros. ¡Gracias por tu ayuda también!

Frank

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

> Lo que no entiendo es la conexión de un Rol que declaro con @DeclareRoles y, por ejemplo, las acciones UME que declaro en un DC de acciones.

No hay conexión entre los roles de Java EE declarados con, por ejemplo, @DeclareRoles y las acciones UME declaradas en actions.xml.

Los roles de Java EE son roles lógicos pertinentes a la aplicación/módulo particular para la cual están definidos. Deben ser asignados a usuarios/grupos físicos establecidos en el entorno concreto del servidor. El rol de seguridad del servidor es en realidad un rol UME al que se pueden asignar usuarios, grupos y acciones. Al mapear un rol de Java EE a un rol de servidor, implícitamente creas una acción UME que se asigna a ese rol (UME).

> Tengo una clase de Acceso a Base de Datos (Plain Old Java) donde verifico acciones con código como este:

>

>


> IUser user = UMFactory.getAuthenticator().getLoggedInUser();
> if (null != user) {
>   try {
>     user.checkPermission(new MyPermission("DB", "access"));
>   } catch (AccessControlException ace){
>      throw new RuntimeException("No Autorizado", ace);
>   }
> }
> else {
>   throw new RuntimeException("No hay Usuario autenticado");
> }
> 

>

> ¿Cómo puedo hacer que se ejecute un Message Driven Bean con esas acciones? No veo la conexión en eso...

Eso no es posible. Como expliqué anteriormente, las aplicaciones de Java EE crean sus propias acciones UME y las mapean a roles UME.

> En cuanto a mi crítica de la ayuda, ¿puedo explicar cuál es la dificultad de esa página de ayuda?

> - el mapeo de roles de seguridad se trata de los roles carCustomer y guest

> - RunAs y RolesDeclares se refieren a Adminstrator

> -> por lo tanto, los ejemplos no son consistentes

Buena observación. Ya lo he trasladado a nuestros colegas de documentación. ¡Gracias!

> - En ningún lugar se explica realmente qué significa un rol de servidor en el mapeo de roles

Esto se explica en el [ejb-j2ee-engine XSD|http://help.sap.com/saphelp_nwce10/helpdata/en/45/0963e714232d6be10000000a11466f/frameset.htm], sin embargo, probablemente tengas razón en que podría estar vinculado desde la página actual. También lo tendremos en cuenta.

> -> ¿Dónde veo eso en mi Gestión de Identidad?

> -> En algún lugar encontré que lo vería en las acciones, ¡pero lo intenté y no estaba allí...

Deberías poder encontrarlo en los Roles.

¡Espero que esto ayude!

\-- Vladimir

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Gracias por tu respuesta en primer lugar!

Lo que no entiendo es la conexión de un Rol que declaro con @DeclareRoles y, por ejemplo, las acciones UME que declaro en un DC de Acciones.

Tengo una clase de Acceso a la Base de Datos (Plain Old Java) donde verifico acciones con código como este:


IUser user = UMFactory.getAuthenticator().getLoggedInUser();
if (null != user) {
  try {
    user.checkPermission(new MyPermission("DB", "access"));
  } catch (AccessControlException ace){
     throw new RuntimeException("No Autorizado", ace);
  }
}
else {
  throw new RuntimeException("No hay un Usuario autenticado");
}

Entonces, ¿cómo puedo hacer que se ejecute un Bean impulsado por mensajes con esas acciones? No veo la conexión en eso...

En cuanto a mi crítica de la ayuda, ¿puedo explicar cuál es la dificultad de esa página de ayuda?

- el mapeo de roles de seguridad se trata de los roles carCustomer e invitado

- RunAs y RolesDeclares se trata de Adminstrador

-> por lo tanto, los ejemplos no son consistentes

- En ninguna parte se explica realmente qué significa un rol de servidor en el mapeo de roles

-> ¿Dónde puedo ver eso en mi Gestión de Identidad?

-> En algún lugar encontré que lo vería en las acciones, pero lo intenté y no estaba allí...

En general, como a menudo, describe cómo y no por qué.

Frank

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Frank,

Bueno, debo decir que en muchos casos hasta ahora help.sap.com ha sido realmente útil. Pero sabes, la mayor habitación del mundo es la habitación para la mejora.

De acuerdo, primero necesitas declarar el rol enumerándolo en @DeclareRoles, y luego usarlo en @RunAs.

Sin embargo, estoy de acuerdo en que el mensaje de advertencia no es muy preciso y debería ser editado para mencionar también las otras formas de declarar un rol de seguridad en Java EE 5, a saber @DeclareRoles y @RolesAllowed.

¡Espero que eso ayude!

\-- Vladimir

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?