インターネット アプリケーションの普及に伴い、セキュリティ問題は徐々に重要なテーマになってきました。アプリケーションのセキュリティを確保するために、開発者は不正アクセスや攻撃を防ぐためにさまざまな対策を講じる必要があります。 JWT (JSON Web Token) は、Web アプリケーションの宣言に使用される安全な送信方法です。
Java API 開発で JWT 認証を使用すると、API のセキュリティを効果的に保護し、開発プロセス中のアクセス制御を容易にすることができます。
JWT は、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。ヘッダーは、JWT のタイプと使用されるアルゴリズムを記述するために使用され、通常は HMAC SHA256 または RSA 暗号化が使用されます。ペイロードは、一般にユーザー ID、有効期限などを含む JWT 関連情報を保存するために使用されます。署名は、JWT の信頼性と整合性を確保するために最初の 2 つの部分を暗号化した結果です。
JWT 認証を使用する前に、次の手順を実行する必要があります:
2.1 JWT の生成
JWT を生成するには、HMAC SHA256 や RSA などの暗号化方式を使用する必要があります。具体的な実装については、次のコードを参照してください (参照のみ):
public String generateToken(User user){ String token = null; try { String key = "12898faaca29bde369e281e99193eab4d8"; Algorithm algorithm = Algorithm.HMAC256(key); token = JWT.create() .withClaim("userId", user.getUserId()) .withExpiresAt(new Date(System.currentTimeMillis()+60*60*1000)) .sign(algorithm); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return token; }
2.2 JWT の検証
JWT を検証するプロセスは非常に簡単で、JWT を解析して検証するだけです。それは、そこに含まれる情報に基づいて行われます。一般に、JWT 検証は次の条件を満たす必要があります。
具体的な実装については、次のコードを参照してください (参照のみ):
public boolean verifyToken(String token){ boolean flag=false; try { String key = "12898faaca29bde369e281e99193eab4d8"; Algorithm algorithm = Algorithm.HMAC256(key); JWTVerifier verifier = JWT.require(algorithm) .build(); DecodedJWT jwt = verifier.verify(token); String userId=jwt.getClaim("userId").asString(); Date expiresAt=jwt.getExpiresAt(); flag=true; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } return flag; }
Java API で JWT 認証を使用する手順は次のとおりです。
3.1 JWT を取得する
ユーザーが正常にログインした後、サーバーは JWT を返す必要があります。クライアントに JWT をローカルに保存すると、クライアントは JWT をローカルに保存できます。
3.2 リクエストの送信
クライアントがリクエストを送信するときは、次のように JWT を含める必要があります。JWT は通常、リクエスト ヘッダーに含めることができます。 3.3 JWT の検証
リクエストを受信した後、サーバーは JWT の有効性を検証して、ユーザーが認証後にアクセスしていることを確認する必要があります。 JWT 検証が失敗した場合は、対応するエラー メッセージが返されます。
具体的な実装については、次のコードを参照してください (参照のみ):
Authorization: Bearer {token}
以上がJava API開発でのJWT認証の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。