Skip to content

PT BR 04.02.01. Anotações

Rafael Dipold edited this page Dec 21, 2013 · 1 revision

A anotação @Secured é a anotação primária e tem a função de "marcar" o elemento para ser observado pelo plugin.
Ela pode ser usada tanto a nível de classe:

@Secured
public class SecuredClass {
	@RequiresUser		public void requiresUserLoggedIn() {}
	@RequiresAuthentication	public void requiresAuthentication() {}
}

Quanto de método:

public class SecuredClass {
	public void publicMethod() {}
	@Secured @RequiresAuthentication public void requiresAuthentication() {}
}

Para tornar um elemento seguro, em conjunto com a anotação @Secured, deve ser usado uma das seguintes anotações:

  1. Para autenticação:

    @RequiresUser Essa anotação define que parar executar o elemento é necessário que o usuário corrente (Subject) teve suas credenciais autenticadas ou lembradas na sessão atual ou anterior.

    @RequiresAuthentication Essa anotação define que parar executar o elemento é necessário que o usuário corrente (Subject) possua suas credenciais autenticadas na sessão atual.

    @RequiresGuest Essa anotação define que parar executar o elemento é necessário que o usuário corrente (Subject) não possua suas credenciais autenticadas em nenhum momento (usuário anônimo).

  2. Para autorização:

    @RequiresRoles Define que apenas o usuário autenticado e pertencente a determinado perfil (role) possa executar o elemento

    @RequiresPermissions Define que apenas o usuário autenticado e com determinada permissão possa executar o elemento. As permissões são definidas por uma string multinível (separado por :) e pode ser usada em conjunto com o coringa * para designar acesso universal.

    Exemplos de Strings de Permissões:

     printer:hp1100:view
     printer:hp1100:manage
     printer:hp1100:print
     printer:lp7200:view
     printer:lp7200:manage
     printer:lp7200:print
    

    E um determinado papel(role) pode possuir permissões de:

     printer:*
     printer:*:view
     printer:hp1100:*
     printer:hp1100:manage      
    

As anotações de autenticação ou de autorização podem ser usadas a nível de método ou de classe. Exemplos:

@Secured
public class SecuredClass {
	@RequiresUser		public void requiresUser() {}
	@RequiresAuthentication	public void requiresAuthentication() {}
	@RequiresGuest		public void requiresGuest() {}

	@RequiresRoles("User")		 public void requiresRoleUser() {}
	@RequiresRoles("Admin")		 public void requiresRoleAdmin() {}
	@RequiresRoles({"User","Admin"}) public void requiresRoleUserAndAdmin() {}

	@RequiresPermissions("doc:read")		public void requiresPermissionReadDoc() {}
	@RequiresPermissions("doc:write")		public void requiresPermissionWriteDoc() {}
	@RequiresPermissions({"doc:read","doc:write"})	public void requiresPermissionReadWriteDoc() {}
}

Próximo Passo: Programaticamente