Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Aspectos segurança javaee
1. Aspectos de segurança em
ambiente JavaEE
Walter Itamar Mourão
walter.mourao@gmail.com
2. Arquitetura em camadas
Acesso às páginas
Acesso aos serviços
Acesso aos dados
(fraco em aplicações JavaEE típicas)
Podem estar em camadas
físicas diferentes
3. Permissões de acesso - web.xml
As permissões de acessos são definidas no
arquivo web.xml
<security-role>
<role-name>LOG_ONE_ADMIN</role-name>
</security-role>
<security-role>
<role-name>DTE_TARGA</role-name>
</security-role>
<security-role>
<role-name>CONTEINER_TARGA</role-name>
</security-role>
4. Autenticação via realm
Realms são mecanismos para autenticação do
usuário
<Realm
className="c.a.logOne.targa.realm.tomcat.TargaRealm"
dataSourceName="jdbc/logone"/>
5. Mecanismos mais granulados
Deve-se usar a propriedade rendered, readonly
e outras para controlar o acesso do usuário a
componentes e parte específicas da página
<h:inputText id="input1"
value="#{helloWorldBacking.name}"
required="true"
rendered=
"#{ssm:userHasPermission('NameField','View')}"
readonly=
"#{not
ssm:userHasPermission('NameField','Change')}"
/>
6. Spring Security
Projeto iniciado em 2003 (ACEGI), é o mais
usado em segurança JavaEE
Usado por agências do governo e outros
ambientes críticos
Pode ser usado na camada de apresentação
ou serviços
Configuração via XML ou anotações
7. Spring Security na Apresentação
Controla o acesso a páginas e recursos
baseado em roles
<http auto-config="true" access-denied-page="/403.jsp">
<intercept-url pattern="/index.jsp"
access="ROLE_ADMINISTRATOR,ROLE_USER"/>
<intercept-url pattern="/securePage.jsp"
access="ROLE_ADMINISTRATOR"/>
<intercept-url pattern="/**" access="ROLE_ANONYMOUS" />
</http>
8. Spring Security na Apresentação
Permite que mecanismos dinâmicos sejam
agregados para definição de roles->recursos
em tempo de execução
<beans:bean id="accessDecisionManager"
class="org.springframework.security.vote.AffirmativeBased">
<beans:property name="decisionVoters">
<beans:list>
<beans:bean
class="org.springframework.security.vote.RoleVoter"/>
<beans:bean
class="org.springframework.security.vote.AuthenticatedVoter"/>
</beans:list>
</beans:property>
</beans:bean>
9. Spring Security nos Serviços
Intercepta as chamadas aos serviços, tratando
de forma semelhante ao que é feito na camada
de Apresentação
<global-method-security secured-
annotations="enabled">
<protect-pointcut
expression="execution(*
o.s.s.petclinic.Clinic.storeVisit(..))"
access="ROLE_SUPERVISOR"/>
</global-method-security>
10. Autenticação no Spring Security
JDBC, DAO
LDAP, JAAS, OpenID
X.509 (SSL/HTTPS), CAS (single sign on)
Específico da aplicação
...
11. Andromda – Servidor JSP
O Andromda tem suporte à segurança na
camada de apresentação através da geração
do controle de acesso no arquivo web.xml a
partir das associações Ator – Caso de uso
12. Andromda – Servidor JSP
Além da geração das permissões de acesso no
web.xml, o Andromda gera também o código
JSF para o login do usuário
<tr:inputText id="j_username" onkeypress="submitForm(event)"
label="#{messages['login.username']}:"
contentStyle="width:170px;" />
<tr:inputText id="j_password" onkeypress="submitForm(event)"
secret="true" label="#{messages['login.password']}:"
contentStyle="width:170px;" />
13. Andromda - Acegi
Pode-se restringir o acesso aos serviços
traçando dependência do ator para o
serviço/método