2
respostas

Autenticar JWT via android em um Servidor Spring BOOT

Bom dia

Fiz os seus cursos de Android e depois o sincronismo usando Spring Boot.

Estou precisando de um auxilio se puder me ajudar.

Uso como IDE o Android Studio. Usando Java como linguagem. E como componente para enviar comandos HTTP, o Restfit. Na parte Servidora uso Spring Boot, respondendo a autenticação JWT.

Dessa forma. Quando um usuário usando Android envia uma solicitação com os parâmetros necessários, como nome de usuário e senha. O Servidor Rest, recebe a solicitação POST, verifica se o nome de usuário e a senha são válidos. Na validação, o Servidor criará um token. Em seguida, ele enviará o token de volta ao usuário usando Android para armazená-lo e enviá-lo com cada solicitação. Quando o usuário envia uma solicitação com esse token, o Servidor verifica a validade. Se o token for válido, a solicitação será atendida; caso contrário, o aplicativo enviará uma mensagem de erro apropriada.

Preciso de um codigo fonte exemplo para isso.

Desde ja agradeço e parabenizo pelas brilhantes aulas

2 respostas

Boa Tarde Jeronimo,

Quanto realizo a autenticação salvo o token em um SharedPreferences, depois toda requisição que vou fazer acabo chamando esse token e utilizo um Interceptor para poder enviar esse token.

Aqui tem um link com um exemplo:

https://stackoverflow.com/questions/41078866/retrofit-authorization-bearer-token

Resolvi o Problema. O problema era que o Call deve ser feito no Body, em um objeto que contem dois pares de Identificação e Valor. Dessa forma o problema foi resolvido Conforme código abaixo.

HashMap<String, String> data = new HashMap<>();
        data.put("email",email);
        data.put("senha",senha);
        Malhete.RegistroE("******************** Iniciando a  Autenticacao: CALL ");
        Call<token> call = new RetrofitConfig(IPPorta).getTokenService().buscarToken(data);

As classes implementadas foram

public class AutenticarJWT {
    final CaixaFerramenta Malhete = new CaixaFerramenta();

    public void Autenticar(String email, String senha, String IPPorta, final Context Local)
    {

        final CaixaFerramenta Malhete = new CaixaFerramenta();
        HashMap<String, String> data = new HashMap<>();
        data.put("email",email);
        data.put("senha",senha);
        Call<token> call = new RetrofitConfig(IPPorta).getTokenService().buscarToken(data);
        call.enqueue(new Callback<token>()
        {
            @Override
            public void onResponse(Call<token> call, Response<token> response) {
                if (response.isSuccessful())
                {
                    token Token = response.body();
                    AtivoDAO TabelaAtivo = new AtivoDAO(Local);
                    TabelaAtivo.SalvaToken(Token.toString());
                }
                else
                {
                }
            }

            @Override
            public void onFailure(Call<token> call, Throwable t) {
                Log.e("TokenService   ", "Erro ao buscar o cep:" + t.getMessage());
            }
        });

    }
}

public class token {

    private String token;
    private String tipo;

    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public String getTipo() {
        return tipo;
    }
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    @Override
    public String toString() {
        return getTipo() + " " + getToken();
    }
}
public interface tokenService {

    @POST("/auth")
    Call<token> buscarToken(@Body HashMap logar);
}
public class RetrofitConfig {

    private final Retrofit retrofit;

    public RetrofitConfig(String IP) {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient.Builder client = new OkHttpClient.Builder();
        client.addInterceptor(interceptor);


        this.retrofit = new Retrofit.Builder()
                .baseUrl(IP)
                .addConverterFactory(JacksonConverterFactory.create())
                .client(client.build())
                .build();
    }

    public tokenService getTokenService() {
        return this.retrofit.create(tokenService.class);
    }

}