Skip to content

PT BR 04.03. Criptografia

Rafael Dipold edited this page Dec 30, 2013 · 5 revisions

Por padrão, a autenticação é feita sem uso de criptografia, ou seja, comparando diretamente a senha informada com a senha obtida via implementação da interface Profile. Porém gravar as senhas em texto puro não é aconselhável, portanto, o uso de criptografia é altamente recomendável.

Para criptografar as senhas do usuário, o plugin fornece a interface PasswordService que tem como objetivo único fornecer uma interface simples para criptografia.

Exemplo:

@Controller
public class UsuarioDAO {
	@Inject UsuarioDAO usuarioDAO;
	@Inject PasswordService passwordService;
	
	public void salvarUsuario(String username, String plainTextPassword) {
		usuarioDAO.salvarNovoUsuario(username, passwordService.encryptPassword(plainTextPassword));
	}
}

Além disso é necessário ativá-lo na inicialização do plugin para que o Apache Shiro passe a fazer autenticação usando do mesmo método de criptografia. Para isso basta implementar a interface ShiroInitConfigStrategy como feito a seguir:

public class InitConfigStrategy implements ShiroInitConfigStrategy {
	@Override
	public void init(DefaultWebSecurityManager securityManager, AuthorizingRealm realm) {
		realm.setCredentialsMatcher(new PasswordMatcher());
	}
}

Por padrão essa implementação utiliza o algoritmo de criptografia SHA-256. Na documentação oficial do Apache Shiro é possível implementar outros algoritmos de criptografia se necessário.

Próximo Passo: Gerenciamento de Sessão