webserviceログイン用のトークン/サインのペアを検証しようとしているときに問題があります。Java RestEasy:Base64で符号化されたREST
WSはsoap-wsdl 1.1として公開されていますが、クライアントは対応するネイティブアプリケーションを介して消費する必要があります。数時間の研究の後、私たち(クライアントと私)は、wsdlを消費し、残りのAPIとして公開するRest-proxyを公開する方が速いという結論に終わった。 LoginResponseは、以下の構造を有する、JSONを介して送信される
<xs:sequence>
<xs:element minOccurs="0" name="token" type="xs:string"/>
<xs:element minOccurs="0" name="firma" type="xs:base64Binary"/>
</xs:sequence>
検証トークンの
+login(String: username, String: password): LoginResponse(String token, Base64Binary sign);
+verifyToken(String: token, Base64Binary: sign): Boolean;
WSDLパラメータおよび署名:
WSは、認証のためだけであり、2つの方法で構成さ
public class LoginResponse {
private byte[] firma;
private String token;
}
次にverifyTokenによって文字列として受け取られます:
@GET
@Path("/validarToken")
@Produces(MediaType.APPLICATION_JSON)
public Response verifyToken(@QueryParam("token") String token,
@QueryParam("sign") String sign) {
}
次に、sign.getBytes();を使用して符号を変換します。
login()によって返されたbyteArrayをデバッグするとき、配列に負の数が含まれていますが、verifyTokenによって受け取られ、負の値以外のバイトに変換されたとき同じ)。
LoginResponseでログインした後で直接verifyTokenを呼び出すと、正しく検証されるため、verifyTokenメソッドが正しく動作します。
ありがとうございました。