17.4. Uso do Security Domain em seu Aplicativo
Visão Geral
Para uso de um security domain em seu aplicativo, primeiro você precisa configurar o domain tanto no arquivo de configuração do servidor ou arquivo descritor do aplicativo. Então, você deve adicionar as anotações requeridas ao EJB que usam isto. Este tópico descreve as etapas solicitadas para uso de um security domain em seu aplicativo.
Procedimento 17.1. Configure o seu Aplicativo para Uso de um Security Domain
Definição do Security Domain
Você pode definir o security domain tanto no arquivo de configuração do servidor ou arquivo descritor aplicativo.Configuração do security domain no arquivo de configuração do servidor.
O security domain é configurado no subsistemasecurity
do arquivo de configuração do servidor. Caso a instância do JBoss EAP 6 estiver sendo executada num managed domain, este é o arquivodomain/configuration/domain.xml
. Caso a instância do JBoss EAP 6 estiver sendo executada como um servidor autônomo, este é o arquivostandalone/configuration/standalone.xml
.Os security domainsother
,jboss-web-policy
ejboss-ejb-policy
são fornecidos por default no JBoss EAP 6. A seguinte amostra XML foi copiada a partir do subsistemasecurity
no arquivo de configuração do servidor.<subsystem xmlns="urn:jboss:domain:security:1.2"> <security-domains> <security-domain name="other" cache-type="default"> <authentication> <login-module code="Remoting" flag="optional"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> <login-module code="RealmDirect" flag="required"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> </authentication> </security-domain> <security-domain name="jboss-web-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> <security-domain name="jboss-ejb-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> </security-domains> </subsystem>
Você pode configurar os security domains adicionais conforme seja necessário usando o Console de Gerenciamento ou CLI.Configuração do security domain no arquivo do descritor do aplicativo
O security domain é especificado no elemento filho<security-domain>
do elemento<jboss-web>
no arquivoWEB-INF/jboss-web.xml
do aplicativo. A seguinte amostra configura o security domain nomeadomy-domain
.<jboss-web> <security-domain>my-domain</security-domain> </jboss-web>
Esta é uma das muitas configurações que você pode especificar no descritorWEB-INF/jboss-web.xml
.
Adição da Anotação Requerida para o EJB
Você configura a segurança no EJB usando as anotações@SecurityDomain
e@RolesAllowed
. A seguinte amostra de código EJB limita o acesso ao security domainother
por usuários na funçãoguest
.package example.ejb3; import java.security.Principal; import javax.annotation.Resource; import javax.annotation.security.RolesAllowed; import javax.ejb.SessionContext; import javax.ejb.Stateless; import org.jboss.ejb3.annotation.SecurityDomain; /** * Simple secured EJB using EJB security annotations * Allow access to "other" security domain by users in a "guest" role. */ @Stateless @RolesAllowed({ "guest" }) @SecurityDomain("other") public class SecuredEJB { // Inject the Session Context @Resource private SessionContext ctx; /** * Secured EJB method using security annotations */ public String getSecurityInfo() { // Session context injected using the resource annotation Principal principal = ctx.getCallerPrincipal(); return principal.toString(); } }
Para maiores amostras de código, consulte oejb-security
quickstart do pacote do JBoss EAP 6 Quickstarts, disponível a partir do Portal do Cliente Red Hat.