最近Json Web Token(JWT)について知りました。私はそれがどのように動作するのが好きだったので、私は自分のプロジェクトでそれを実装し始めました。私のプロジェクトでは、通信するための2つのアプリケーションが必要です。 1つはアンドロイドアプリ、もう1つはLaravelウェブアプリケーションです。AndroidでJWTから署名、ヘッダー、本文を収集する方法
モバイルアプリは、ユーザーの認証情報がサーバー側から認証された後にログインします。
モバイルアプリからサーバーにユーザー名とパスワードを送信しました。文字列形式のJWTがあります。しかし、この時点以降、私はJWTのコンテンツを収集する方法を見つけることができませんでした。
私はほとんどすべての可能な結果(グーグルの結果)を見てきましたが、内容、署名、ヘッダーを取得できませんでした。
:try {
Claims claims = Jwts.parser().parseClaimsJwt(jwtHeaderAndClaim).getBody();
System.out.println("ID of the claims: " + claims.getId().toString());
}catch (Exception e){
Log.e("Exception: ", e.toString());
}
上記のコードは、次のエラーを生成します。私は少しさらに、次のコードを使用していたと持っている方法の
一つ
は、私はsetSigningKey()を削除した気付きますException: io.jsonwebtoken.PrematureJwtException: JWT must not be accepted before 2016-06-14T10:20:09+0300. Current time: 2016-06-14T10:19:37+0300´
jwtHeaderAndClaimは署名部分のみを削除した後のJWT文字列です(例: "xxxxxx.yyyyyyyy")。私が代わりにjwtHeaderAndClaimのjwtString(xxxxxxx.yyyyyyyy.ccccccc)を入れた場合、次のエラーが発生します。
Exception: io.jsonwebtoken.UnsupportedJwtException: Signed JWSs are not supported
stormpath exampleに示したように、私はsetSigningKeyを置く場合:
Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(apiKey.getSecret())).parseClaimsJwt(jwtString).getBody();.
を上記のコードはしません2つの理由で動作します: 1.私はライブラリを持っていません import javax.xml.bind.DatatypeConverter; 2.鍵を取得する方法がわかりません。
しかし、今回は私がログインしてユーザー名(姓、名字、電話番号など)と署名(トークン)を収集しようとしているので、キーが必要ないことを知っています。サーバー側に格納するデータを送信するバックエンドにアクセスするためのトークンがあります。
誰でもお手伝いできますか?