2017-01-06 3 views
1

У меня возникли проблемы при попытке проверить пару токенов/значков для входа в вебсервис.Java RestEasy: Base64 закодированный знак над REST

WS обнажается как мыло-wsdl 1.1, но клиент должен потреблять его через приложение, использующее реакцию. После нескольких часов исследований мы (клиент и я) закончили вывод, что было бы быстрее опубликовать Rest-proxy, который потребляет wsdl и предоставляет его как rest api.

с WS предназначено исключительно для проверки подлинности и состоит из двух методов:

+login(String: username, String: password): LoginResponse(String token, Base64Binary sign); 

+verifyToken(String: token, Base64Binary: sign): Boolean; 

параметров WSDL для маркеров и знак проверка

<xs:sequence> 
<xs:element minOccurs="0" name="token" type="xs:string"/> 
<xs:element minOccurs="0" name="firma" type="xs:base64Binary"/> 
</xs:sequence> 

LoginResponse посылаются через JSON, со следующей структурой:

public class LoginResponse { 

    private byte[] firma; 
    private String token; 

} 

Затем получено путем подтвержденияТокнуть как строку:

@GET 
@Path("/validarToken") 
@Produces(MediaType.APPLICATION_JSON) 
public Response verifyToken(@QueryParam("token") String token, 
     @QueryParam("sign") String sign) { 

} 

Затем знак преобразуется с использованием sign.getBytes();

Я заметил, что когда я отлаживаю byteArray, возвращаемый login(), массив включает отрицательные числа, но когда он получен проверкойToken и преобразован в байты, не представляются отрицательные значения (результирующий массив не является одна и та же).

Тем не менее, если я непосредственно вызываю verifyToken после входа в LoginResponse, он корректно проверяет, поэтому метод verifyToken работает правильно.

Спасибо.

ответ

1

Как я не мог решить эту проблему с помощью base64 для преобразования строковога я сделал следующее:

-Converted байтового массива Base64 в шестнадцатеричной строку -verifyToken теперь принимает шестнадцатеричную строку в качестве знака. -конвертировал знак шестнадцатеричной строки обратно в массив байтов.

Хроматическое преобразование было предоставлено: https://stackoverflow.com/a/5942951/2350854