14.6. Uso do Security Domain em seu Aplicativo
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 14.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 subsistemasecuritydo arquivo de configuração do servidor. Caso a instância do JBoss Enterprise Application Plataform estiver sendo executada num managed domain, este é o arquivodomain/configuration/domain.xml. Caso a instância do JBoss Enterprise Application Plataform estiver sendo executada como um servidor autônomo, este é o arquivostandalone/configuration/standalone.xml.Os security domainsother,jboss-web-policyejboss-ejb-policysão fornecidos por default no JBoss Enterprise Application Plataform 6. A seguinte amostra XML foi copiada a partir do subsistemasecurityno 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 Management Console 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.xmldo 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@SecurityDomaine@RolesAllowed. A seguinte amostra de código EJB limita o acesso ao security domainotherpor 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-securityquickstart do pacote do JBoss Enterprise Application Plataform 6 Quickstarts, disponível a partir do Portal do Cliente Red Hat.