¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como executar um Message Driven Bean em uma função específica com a anotação @RunAs e ejb-j2ee-engine.xml

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

Olá,

Estou tentando executar um Message Driven Bean em uma função específica. Pensei que a anotação @RunAs faria o trabalho, mas não consigo fazê-la funcionar.

No meu código fonte, coloquei:

@RunAs("myadmin")

No ejb-j2ee-engine.xml, coloquei o seguinte:


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

Ao implantar, recebo o 'aviso':

Aviso ocorrido no servidor 7820350 durante a atualização sap.com/TEST_EAR : EJB Model Builder: J2EE Security role myadmin está mapeado a server role(roles) no xml adicional mas não pode ser encontrado na etiqueta de security-role do ejb-jar.xml., arquivo: MyProject.jar#MyProject.jar, coluna 0, linha 0, severidade: aviso

Por que preciso de um ejb-jar.xml? Pensei que não fosse mais necessário com o J2EE 5? E ao criar um, recebo erros ao inserir uma tag chamada "<security-role>".

Consultei a ajuda [aqui|http://help.sap.com/saphelp_nwce10/helpdata/en/46/3079bf50094f09e10000000a114a6b/frameset.htm], mas na maioria das vezes não foi de grande ajuda...

Então, como posso executar um Message Driven Bean como uma função que defino no UME como "Administrador"? Ou qual é o significado de "server-role-name"? Todo esse conceito de funções de segurança UME e J2EE é um pouco confuso para mim, para ser honesto

Qualquer ajuda seria apreciada,

Obrigado Frank

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

4 Respuestas

0
Cargando...

Olá,

Finalmente consegui fazer funcionar Criei uma função (UME) no meu servidor 7.10, dei a essa função os direitos de acesso necessários (como ações UME).

Em seguida, criei um usuário 'meuUsuário' que tem essa função...

E criei uma entrada no ejb-j2ee-engine.xml para meu bean:


      <run-as-identity-map>
        <user-name>meuUsuário</user-name>
      </run-as-identity-map>

e criei as permissões de segurança conforme indicado na página de ajuda.

Também precisei adicionar um ejb-jar.xml com:


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

Como não descobri quando é uma função J2EE e quando é uma função UME, nomeei-os igualmente Depois disso, consigo ver nos registros que meu MDB está sendo executado com o usuário 'meuUsuário'.

Espero que essa breve explicação possa ajudar outros. Obrigado também pela sua ajuda!

Frank

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

> O que não entendo é a conexão de uma Função que declaro com @DeclareRoles e, por exemplo, as ações UME que declaro em um DC de ações.

Não há conexão entre os papéis do Java EE declarados com, por exemplo, @DeclareRoles e as ações UME declaradas em actions.xml.

Os papéis do Java EE são papéis lógicos pertinentes à aplicação/módulo particular para a qual estão definidos. Devem ser atribuídos a usuários/grupos físicos estabelecidos no ambiente concreto do servidor. O papel de segurança do servidor é na verdade um papel UME ao qual podem ser atribuídos usuários, grupos e ações. Ao mapear um papel do Java EE para um papel de servidor, implicitamente você cria uma ação UME que é atribuída a esse papel (UME).

> Tenho uma classe de Acesso a Banco de Dados (Plain Old Java) onde verifico ações com 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("Não Autorizado", ace);
>   }
> }
> else {
>   throw new RuntimeException("Não há Usuário autenticado");
> }
> 

>

> Como posso fazer com que um Message Driven Bean seja executado com essas ações? Não vejo a conexão nisso...

Isso não é possível. Como expliquei anteriormente, as aplicações do Java EE criam suas próprias ações UME e as mapeiam para papéis UME.

> Quanto à minha crítica à ajuda, posso explicar qual é a dificuldade dessa página de ajuda?

> - o mapeamento de papéis de segurança refere-se aos papéis carCustomer e guest

> - RunAs e RolesDeclares referem-se a Administrador

> -> portanto, os exemplos não são consistentes

Boa observação. Já encaminhei para nossos colegas de documentação. Obrigado!

> - Em nenhum lugar é realmente explicado o que significa um papel de servidor no mapeamento de papéis

Isso é explicado no [ejb-j2ee-engine XSD|http://help.sap.com/saphelp_nwce10/helpdata/en/45/0963e714232d6be10000000a11466f/frameset.htm], no entanto, você provavelmente está certo de que poderia estar vinculado a partir da página atual. Também levaremos isso em consideração.

> -> Onde vejo isso na minha Gestão de Identidade?

> -> Em algum lugar encontrei que veria nas ações, mas tentei e não estava lá...

Deveria conseguir encontrar nos Papéis.

Espero que isso ajude!

\-- Vladimir

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

°Obrigado pela sua resposta em primeiro lugar!

O que eu não entendo é a conexão de uma função que declaro com @DeclareRoles e, por exemplo, as ações UME que declaro em um DC de Ações.

Tenho uma classe de Acesso ao Banco de Dados (Plain Old Java) onde verifico ações com 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("Não Autorizado", ace);
  }
}
else {
  throw new RuntimeException("Não há um Usuário autenticado");
}

Então, como posso fazer com que um Bean acionado por mensagens execute essas ações? Não vejo a conexão nisso...

Quanto à minha crítica da ajuda, posso explicar qual é a dificuldade daquela página de ajuda?

- o mapeamento de funções de segurança trata dos papéis carCustomer e convidado

- RunAs e RolesDeclares tratam do Administrador

-> portanto, os exemplos não são consistentes

- Em nenhum lugar é realmente explicado o que significa uma função de servidor no mapeamento de funções

-> Onde posso ver isso no meu Gerenciamento de Identidade?

-> Em algum lugar eu achei que veria nas ações, mas tentei e não estava lá...

Em geral, como frequentemente, descreve como e não por que.

Frank

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

Olá Frank,

Bem, devo dizer que em muitos casos até agora o help.sap.com tem sido realmente útil. Mas sabes, o maior quarto do mundo é o quarto para a melhoria.

Ok, primeiro você precisa declarar a função enumerando-a em @DeclareRoles e depois usá-la em @RunAs.

No entanto, concordo que a mensagem de aviso não é muito precisa e deveria ser editada para mencionar também as outras formas de declarar uma função de segurança no Java EE 5, a saber @DeclareRoles e @RolesAllowed.

Espero que isso ajude!

-- 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?