JWT で API を保護する方法
JSON Web Token(JWT)は、ユーザー情報をトークンに直接埋め込むことでAPIを安全に保護する信頼性の高い方法です。 ステートレス認証, つまり、サーバー側のセッションストレージは不要です。そのため、最新の分散システムやマイクロサービスに非常に効率的です。.
重要なポイント:
- JWT構造: ヘッダー (メタデータ)、ペイロード (ユーザークレーム)、署名 (整合性の保証) の 3 つの部分で構成されます。.
- 利点: スケーラビリティとパフォーマンスが向上し、アクセス制御が簡素化されます。.
- セキュリティのベストプラクティス:
- トークンを送信するときは常に HTTPS を使用してください。.
- セット 有効期限が短い トークン用。.
- ストレージには、localStorage や sessionStorage ではなく、HttpOnly クッキーを使用します。.
- 定期的に回転する 暗号鍵.
- すべてのAPIエンドポイントでトークンを検証する, 、次のような主張をチェックする
経験,問題、 そしてオーストラリア.
JWTは軽量で高速、そしてプラットフォームを問わず動作するため、APIのセキュリティ保護に最適です。ただし、不適切な保存や検証といったよくある落とし穴を避けるため、慎重な実装が不可欠です。.
JSON Web Token (JWT) で Web API を保護する方法
JWTの構造とコンポーネント
安全なAPI認証を実装するには、JSON Web Token(JWT)の構成要素を理解することが鍵となります。JWTは、Base64URLでエンコードされた3つの要素、すなわちヘッダー、ペイロード、署名で構成されます。.
JWT の形式は次のようになります。 ヘッダー.ペイロード.署名. 各パートは個別にエンコードされ、ピリオドで結合されます。この構造により、迅速かつステートレスなトークン検証が可能になります。.
JWT の例を次に示します。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 各パーツはトークンのセキュリティと機能性を確保する上で特定の役割を担っています。それぞれを詳しく見ていきましょう。.
ヘッダー: トークンの種類とアルゴリズム
の ヘッダ トークンの種類や署名に使用されたアルゴリズムなど、トークンに関するメタデータが含まれます。これは次のような小さなJSONオブジェクトです。
{ "alg": "HS256", "typ": "JWT" } の "「タイプ」" フィールドは通常、トークンがJWTであることを示しますが、 "「アルグ」" フィールドは署名アルゴリズムを指定します。このアルゴリズムの選択はトークンのセキュリティに直接影響します。.
- HS256: 共有秘密キーに依存し、内部サービスに適しています。.
- RS256: 公開鍵と秘密鍵のペアを使用するため、パブリックAPIや分散システムに最適です。秘密鍵は発行者が保持し、バリデーターは公開鍵のみを必要とします。.
- ES256: 計算負荷が少なく強力なセキュリティを提供するため、モバイル アプリやリソースの少ない環境に適しています。.
ペイロード: クレームとメタデータ
の ペイロード 実際の情報が存在する場所です。ユーザーやその他のエンティティに関するステートメントである「クレーム」と、認証のためのメタデータが含まれます。.
請求は次の 3 つのカテゴリに分類されます。
- 登録された請求: 標準フィールド
問題(発行者)、,経験(有効期限)、,サブ(主題)、およびオーストラリア(観客)。. - 公的な主張: パブリック IANA レジストリに登録されたカスタム フィールド。.
- 民間の請求: JWT を使用する当事者間で合意されたカスタム フィールド。.
ペイロードの例を次に示します。
{ "sub": "1234567890", "name": "John Doe", "role": "admin", "exp": 1516239022, "iat": 1516235422 } 注目すべきは、ペイロードが 暗号化されていない – Base64Urlエンコードのみ。つまり、誰でもデコードして内容を読み取ることができます。ペイロードにパスワードやクレジットカード番号などの機密情報を保存することは避けてください。.
トークンの有効期限を適切に管理する(経験)および発行時(iat)はリスクを最小限に抑えるために不可欠です。例えば、ペイロードにロールベースのデータを埋め込むことで、特にエンタープライズ環境において、ローカルAPIの認証を効率化できます。.
署名: トークンの整合性
の サイン トークンの整合性を保証し、改ざんを防止します。エンコードされたヘッダーとペイロードをピリオドで結合し、指定されたアルゴリズムと秘密鍵を使用して署名することで作成されます。.
のために HS256, 署名は次のように生成されます。
HMACSHA256( base64UrlEncode(ヘッダー) + "." + base64UrlEncode(ペイロード), シークレット ) のために RS256, 署名には秘密鍵を使用し、検証には公開鍵を使用します。
RSASHA256( base64UrlEncode(ヘッダー) + "." + base64UrlEncode(ペイロード), 秘密鍵 ) APIはJWTを受信すると、トークンのヘッダーとペイロードを用いて署名を再計算します。再計算された署名がトークン内の署名と一致する場合、APIはトークンが改ざんされていないことを認識します。例えば、誰かがペイロードを変更しようとした場合(例えば、ユーザーのロールを「ユーザー」から「管理者」にアップグレードした場合)、署名の検証は失敗します。これにより、JWTは 不正開封防止, 不正な変更が簡単に検出されるようになります。.
さらに、署名によってトークンの発行元が確認され、認証プロセスに信頼の層が追加されます。.
| アルゴリズム | キータイプ | キーの長さ | ベストユースケース |
|---|---|---|---|
| HS256 | 対称的 | 256ビット | 内部サービス |
| RS256 | 非対称 | 2,048ビット以上 | パブリックAPI |
| ES256 | 非対称 | 256ビット | モバイル/低リソースアプリ |
JWTセキュリティの実装方法
JSON Web Token(JWT)を使用してAPIを保護するには、トークンの作成、検証、承認に対する構造化されたアプローチが必要です。これには、安全な認証エンドポイントの設定、トークンの適切な検証、JWTクレームを利用したリソースへのアクセス管理が含まれます。.
JWTの作成と署名
最初のステップは、ユーザーの資格情報を検証した後にトークンを発行する安全な認証サーバーを作成することです。ログインに成功すると、サーバーはユーザー情報を含むJWTを生成し、暗号化アルゴリズムを使用して署名します。.
Node.jsでJWTを作成し署名する方法の例を以下に示します。 jsonwebtoken 図書館:
const jwt = require('jsonwebtoken'); const token = jwt.sign( { userId: 123, roles: ['admin'] }, process.env.JWT_SECRET, { algorithm: 'HS256', expiresIn: '15m', issuer: 'https://auth.yourapi.com', audience: 'https://api.yourapi.com' } ); 社内サービスの場合、, HS256 トークン発行者と検証者が同じ秘密鍵を共有するため、これは良い選択です。公開APIや分散システムの場合、, RS256 または ES256 公開鍵と秘密鍵のペアを使用するため、署名鍵を公開せずにトークンの検証が可能になり、より優れたオプションとなります。.
キー管理のベストプラクティス:
- 環境変数や秘密管理システムなどに秘密と秘密鍵を安全に保存します。.
- 強力なキーを使用します。HMAC の場合は少なくとも 256 ビット、RSA の場合は 2,048 ビット。.
- キーを定期的にローテーションします。.
- ソース コードに秘密をハードコードしないでください。.
次のようなプラットフォーム Serverion 安全な鍵管理とHTTPSの強制設定を提供し、高パフォーマンスで安全なAPIデプロイメントをサポートします。ただし、適切なトークン処理は依然として重要です。.
トークンが作成されたら、次のステップは各 API エンドポイントでトークンを検証することです。.
API での JWT の検証
認証を必要とするすべてのAPIエンドポイントは、受信したJWTを検証し、その信頼性と整合性を確認する必要があります。このプロセスには、トークンの抽出、署名の検証、そしてクレームのチェックが含まれます。.
トークン検証の基本的な例を次に示します。
try { const decoded = jwt.verify(token, process.env.JWT_SECRET, { algorithms: ['HS256'], audience: 'https://api.yourapi.com', issuer: 'https://auth.yourapi.com' }); } catch (err) { // トークンが無効です。リクエストを拒否します } 検証の要点:
- 有効期限(
経験): トークンの有効期限が切れていないことを確認します。. - 発行者(
問題): トークンが信頼できる認証サーバーから発行されたものであることを確認します。. - 観客 (
オーストラリア): トークンが API 用であることを確認します。. - サイン: 指定されたアルゴリズムを使用してトークンの整合性を検証します。.
検証手順が失敗した場合はリクエストを拒否し、「無効なトークン」などの一般的なエラー メッセージを返して、検証プロセスの詳細が公開されないようにします。.
承認ロジックの設定
トークンが検証されると、そのクレームを使用してアクセス制御を適用できます。JWTペイロードには、ユーザーがアクセスできるリソースを決定するのに役立つユーザーロールと権限が含まれることがよくあります。.
ロールベースのアクセス制御 (RBAC): トークン作成時にユーザーロールをトークンペイロードに追加し、保護されたエンドポイントへのアクセスを許可する前にAPIミドルウェアでこれらのロールを確認してください。以下に例を示します。
function requireRole(requiredRole) { return (req, res, next) => { const token = req.headers.authorization?.split(' ')[1]; try { const decoded = jwt.verify(token, process.env.JWT_SECRET); if (decoded.roles && decoded.roles.includes(requiredRole)) { req.user = decoded; next(); } else { res.status(403).json({ error: '権限が不十分です' }); } } catch (err) { res.status(401).json({ error: 'トークンが無効です' }); } }; } 特定のロールを要求することで、特定のルートを保護できます。
app.get('/admin/users', requireRole('admin'), (req, res) => { // 管理者ロールを持つユーザーのみがこのエンドポイントにアクセスできます }); よりきめ細かな制御を行うには、権限ベースの認証を使用します。トークンのペイロードに、次のような権限を含めます。
""権限": ["読み取り:ユーザー", "書き込み:投稿", "削除:コメント"] 次に、各操作に必要な権限を確認します。.
トークンの有効期限と更新:
- トークンが侵害された場合のリスクを最小限に抑えるため、アクセス トークンの有効期間を短くします (例: 15 ~ 30 分)。.
- より長いセッションにリフレッシュ トークンを実装し、ユーザーが繰り返しログインせずに再認証できるようにします。.
JWTはステートレスであるため、APIはセッションデータを保存したり、認証のためにデータベースにクエリしたりする必要がなく、高トラフィックや分散システムに最適です。このアプローチにより、セキュリティを維持しながらスケーラビリティとパフォーマンスが向上します。.
sbb-itb-59e1987
JWT セキュリティのベストプラクティス
APIのセキュリティを確保するには、JSON Web Token(JWT)の作成、検証、管理に関する強力なプラクティスを実装することが不可欠です。これらの手順は、脆弱性を防ぎ、システムを保護するのに役立ちます。.
トークンの送信にはHTTPSを使用する
JWTの送信においては、HTTPSは必須です。HTTPヘッダー内のJWTはプレーンテキストであるため、安全でない接続で送信すると、中間者攻撃による傍受の危険性が高まります。その結果、攻撃者がAPIに不正アクセスする可能性があります。.
2023年のOWASPレポートによると、60%を超えるAPI脆弱性が不適切な認証や安全でないトークン処理に起因しており、多くの問題は安全でない送信方法に関連していることが明らかになりました。この問題に対処するには、以下のガイドラインに従ってください。
- SSL/TLS証明書を有効にする JWT 認証を処理するすべてのサーバー上。.
- HTTPトラフィックをHTTPSにリダイレクトする 自動的に。.
- 強力な暗号スイートを使用する TLS 1.0 や 1.1 などの古いプロトコルを無効にします。.
- HTTP Strict Transport Security (HSTS) ヘッダーを設定する プロトコル ダウングレード攻撃を防ぐため。.
分散システムでは、すべてのコンポーネントでHTTPSが一貫して適用されるようにしてください。例えば、Serverionはセキュリティ維持のため、ホスティングソリューション全体でHTTPSを必須としています。.
開発環境であっても、JWTをHTTP経由で送信することは避けてください。これを怠ると、本番環境にまで影響を及ぼす可能性のある脆弱性が生じる可能性があります。.
トークンの有効期限を設定し、リフレッシュトークンを使用する
有効期間の短いトークンは、リスクを最小限に抑えるシンプルかつ効果的な方法です。アクセストークンの有効期間を15~30分に制限することで、トークンが侵害された場合でも攻撃者が攻撃する機会を減らすことができます。.
より長いセッションには、リフレッシュトークンを活用しましょう。リフレッシュトークンの有効期間は通常7~14日間で、クライアントはユーザーの再認証を必要とせずに新しいアクセストークンをリクエストできます。仕組みは以下のとおりです。
- ログイン後、認証サーバーはアクセス トークンとリフレッシュ トークンの両方を発行します。.
- クライアントは、API リクエストに短命のアクセス トークンを使用します。.
- アクセス トークンの有効期限が切れると、クライアントはリフレッシュ トークンを使用して新しいトークンを取得し、セキュリティを損なうことなくセッションの継続性を維持します。.
MojoAuthの調査によると、API侵害の80%以上が不適切な処理によって発生しています。 トークン管理, 多くの場合、長期間有効なトークンが侵害された後も有効なままであるケースが挙げられます。トークンの有効期限を設定し、リフレッシュトークンを活用することで、こうしたリスクを大幅に軽減できます。.
安全な鍵と秘密の管理
JWTのセキュリティは、署名鍵とシークレットの管理方法に大きく依存します。これらの鍵がクライアント側のコードやバージョン管理システムなど、外部に公開されると、セキュリティフレームワーク全体が損なわれる可能性があります。.
ストレージのベストプラクティス
署名鍵は次のような安全なシステムに保存する AWS シークレットマネージャー または ハシコープ ボールト, は、暗号化されたストレージ、ログ記録、自動キーローテーションを提供します。.
"「不正アクセスを防止し、業界標準への準拠を確保するために、PKI 秘密鍵を安全に保存するための重要なプラクティスを学びます。」"
- Serverionブログ
主要な強度の推奨事項
強力なセキュリティを確保するには、強力でランダムなキーを選択してください。
- HS256: 少なくとも 256 ビットのキーを使用します。内部サービスに最適です。.
- RS256: パブリック API に最適な 2,048 ビットのキーを選択します。.
- ES256: キーの長さが短く、高いセキュリティを実現できるため、モバイル アプリケーションに最適です。.
| アルゴリズム | セキュリティレベル | キーの長さ | ベストユースケース |
|---|---|---|---|
| HS256 | 高い | 256ビット | 内部サービス |
| RS256 | 非常に高い | 2,048ビット | パブリックAPI |
| ES256 | 非常に高い | 256ビット | モバイルアプリ |
主要なローテーション戦略
リスクを最小限に抑えるため、署名鍵を定期的にローテーションしてください。バージョン管理システムを使用することで、移行期間中もアプリケーションが現在の鍵と以前の鍵の両方で署名されたトークンを検証できるようになります。このアプローチにより、サービスの継続性を維持しながらセキュリティを強化することができます。.
秘密情報をコードベースに直接ハードコーディングすることは避けてください。代わりに、実行時に安全に挿入してください。.
エンタープライズ レベルのセットアップの場合、Serverion などのプラットフォームは、暗号化されたストレージと堅牢なアクセス制御を備えた安全なインフラストラクチャを提供し、グローバル データ センター全体で適切なキー管理を保証します。.
よくある JWT の間違いとその修正方法
経験豊富な開発者であっても、JWTのセキュリティに関してはつまずく可能性があります。APIを安全に保つには、これらのよくあるミスを避けることが不可欠です。これらのエラーは、せっかく実装したベストプラクティスを台無しにし、システムを脆弱にする可能性があります。.
安全でないトークンの保管
JWTをlocalStorageまたはsessionStorageに保存するのはリスクの高い方法です。これらの保存方法では、トークンがXSS(クロスサイトスクリプティング)攻撃にさらされ、攻撃者が認証トークンを盗む可能性があります。.
仕組みはこうです。攻撃者がXSS脆弱性を悪用すると、ブラウザの保存場所に保存されているすべての情報にアクセスできるようになります。JWTを入手すると、ユーザーになりすまし、保護されたリソースへの不正アクセスが可能になります。2022年のOWASPレポートによると、, 30%を超えるAPIの脆弱性 これらは認証とトークン管理の不備に関連し、安全でない JWT ストレージが主な原因となっています。.
localStorageやsessionStorageの代わりに、 HttpOnly クッキー. これらのCookieはJavaScriptからアクセスできないため、XSS攻撃のリスクが大幅に軽減されます。保存方法の簡単な比較は以下のとおりです。
| 保管方法 | セキュリティレベル | XSSに対する脆弱性 | JS へのアクセシビリティ | 推奨用途 |
|---|---|---|---|---|
| ローカルストレージ | 低い | 高い | はい | 推奨されません |
| セッションストレージ | 低い | 高い | はい | 推奨されません |
| HttpOnly クッキー | 高い | 低い | 番号 | 推奨 |
モバイルアプリの場合は、次のような安全なストレージオプションを使用します。 iOSキーチェーン または Android キーストア, は、機密データに対してハードウェアによるセキュリティと暗号化を提供します。.
HttpOnlyクッキーを設定するときは、次の点も確認してください。 安全な, なので、CookieはHTTPS接続でのみ送信されます。エンタープライズ環境向けには、ServerionなどのプロバイダーがSSL管理機能を組み込んだマネージドソリューションを提供しており、インフラストラクチャ全体にわたって安全なCookie処理を容易に実装できます。.
トークン検証のスキップ
トークンを安全に保管することは最初のステップに過ぎません。トークンを徹底的に検証することも必要です。トークンを受け取ったからといって、それが有効であると決して想定しないでください。.
適切な JWT 検証には、次の 2 つの重要な手順が含まれます。 署名検証 そして クレームチェック. 署名によりトークンが改ざんされていないことが保証され、クレーム検証によりトークンの信頼性、有効性、アプリケーションとの関連性が確認されます。.
Node.js Express バックエンドで堅牢な JWT 検証を実装する方法は次のとおりです。
const jwt = require('jsonwebtoken'); try { const decoded = jwt.verify(token, process.env.JWT_SECRET, { algorithms: ['HS256'], audience: 'https://api.example.com', issuer: 'https://auth.example.com' }); req.user = decoded; } catch (err) { return res.status(401).send('無効なトークン'); } この例では、トークンの署名、アルゴリズム、オーディエンス、発行者をチェックし、正当なトークンのみが受け入れられるようにします。攻撃者がアルゴリズム混同攻撃によって弱い検証方法を悪用するのを防ぐため、常に想定されるアルゴリズムを指定してください。.
無効なトークンを拒否する場合は、汎用的なエラーメッセージを使用してください。これにより、攻撃者が詳細なエラー応答を利用してエクスプロイトを洗練させることを防止できます。.
機密データをJWTに格納する
JWTペイロードの内容は、その保存方法や検証方法と同じくらい重要です。JWTペイロードには機密情報を含めないでください。JWTペイロードは エンコードされた, 暗号化されていないため、トークンを傍受した人は誰でもその内容を簡単に解読できます。.
パスワード、社会保障番号、クレジットカード情報といった機密情報は、JWTに含めてはいけません。トークンが傍受、ログ記録、または漏洩した場合、すべてのデータが攻撃者にとって無防備なものとなります。.
代わりに、ペイロードを 重要な情報 ユーザーID、ロール、有効期限などの標準的なクレームなど、認可に必要な情報。追加のユーザーデータについては、トークン検証後に別途API呼び出しを行い、サーバーから安全に取得してください。.
セキュリティをさらに強化するには、 トークン失効メカニズム 侵害されたトークンを無効にするためにブラックリストのような手段を使う。短い有効期間(例:, 15~30分) をアクセス トークンに使用し、有効期間の長いリフレッシュ トークンと組み合わせて使用することで、トークンの侵害に関連するリスクを最小限に抑えます。.
複数のチームやサービスがトークンを扱う可能性のあるエンタープライズ環境では、これらのプラクティスはさらに重要になります。Serverionのようなプロバイダーは、組織がインフラストラクチャ全体にわたって強力なJWTセキュリティを維持できるよう、安全な鍵管理およびコンプライアンスツールを提供しています。.
JWT APIセキュリティの重要なポイント
APIの機能性を維持しながら安全性を確保するには、JWTセキュリティの実装には包括的なアプローチが必要です。 無国籍の性質 JWT は最新の分散システムで完璧に機能し、サーバー側のセッション管理を必要とせずに API を拡張できます。.
注目すべき点は次のとおりです。
- トークンを適切に検証する: JWTの署名とコアクレームを常に検証する。
経験(有効期限)、,問題(発行者)、およびオーストラリア(オーディエンス)。これにより、トークンが本物であり、改ざんされていないことが保証されます。. - 短い有効期間を使用するアクセストークンの有効期間は短く(通常15~30分)、7~14日間有効なリフレッシュトークンとペアリングします。リスクを軽減するため、リフレッシュトークンは安全にローテーションしてください。.
- 安全な送信と保管: 不正アクセスを防ぐために、トークンは常に HTTPS 経由で送信し、HttpOnly クッキーなどで安全に保存します。.
- 鍵を安全に管理する: 暗号化キーを環境変数や専用のキー管理システムなどの安全な環境に保存し、漏洩から保護します。.
- アクセス制御にクレームを活用する: JWTクレームを使用することで、ロールベースアクセス制御(RBAC)を効率的に実装し、追加のデータベースクエリを回避できます。ただし、JWTはエンコードされるだけで暗号化はされないため、パスワードや個人データなどの機密情報をJWTペイロードに含めないでください。.
これらのプラクティスは、強力なJWTセキュリティの基盤となります。重要なインフラを扱う組織にとって、 Serverion 安全な HTTPS 伝送と全体的なインフラストラクチャのセキュリティをサポートするために、SSL 証明書、安全なキー ストレージ、グローバル データ センターが組み込まれたマネージド ホスティング ソリューションを提供します。.
よくある質問
セッションベースの認証と比較して、JWT は API のスケーラビリティとパフォーマンスをどのように向上させるのでしょうか?
JSON Web Token(JWT)は、サーバー側のセッションストレージを不要にすることで、APIのスケーラビリティとパフォーマンスを向上させるスマートな方法を提供します。従来のセッションベースの認証では、サーバーがセッションデータを保存し、頻繁に検索を実行する必要があるため、リソースに負担がかかります。一方、JWTは自己完結型であり、必要なユーザー情報はすべてトークン自体に格納されます。つまり、集中型のセッションストアが不要なため、サーバーの負荷が軽減され、複数のサーバーにまたがるスケーリングが容易になります。.
JWTのもう一つの利点は、その軽量設計によりHTTPヘッダー経由で簡単に送信できることです。これは、現代のステートレスAPIアーキテクチャに最適です。さらに、コンパクトな構造と暗号署名により、クライアントとサーバー間の安全で効率的な通信が確保され、パフォーマンスのスムーズな維持に役立ちます。.
JWT に署名する際の HS256、RS256、ES256 のセキュリティ上の違いは何ですか? また、API に適切なものを選択するにはどうすればよいですか?
JSON Web Token (JWT) の署名に選択するアルゴリズムは、API のセキュリティにおいて重要な役割を果たします。. HS256 トークンの署名と検証の両方に共通の秘密鍵を使用します。このアプローチは単純ですが、セキュリティを維持するために秘密鍵を慎重に管理する必要があります。一方で、, RS256 そして ES256 公開鍵と秘密鍵のペアを使用することで、セキュリティがさらに強化されます。これらのアルゴリズムでは、秘密鍵は署名専用に使用され、公開鍵は検証のために配布されます。.
アルゴリズムを決定する際には、APIの具体的なニーズと設定を考慮してください。シンプルさとスピードが最優先事項である場合は、, HS256 秘密鍵が適切に保護されている限り、これは適切な選択肢となるでしょう。より高いセキュリティが求められるシステム、特に公開鍵を安心して共有できる分散環境においては、 RS256 または ES256 より良い選択です。特に、, ES256 楕円曲線暗号により、トークンのサイズが小さくなり、暗号保護が強力になるという利点があります。.
最終的に重要なのは、要件を慎重に評価し、キーを管理するためのベスト プラクティスに従って API を安全に保つことです。.
スムーズなユーザー エクスペリエンスを維持しながらセキュリティを確保するために、トークンの有効期限と更新トークンを処理するためのベスト プラクティスは何ですか。
トークンの有効期限と更新トークンを効果的に管理するには、安全性の維持とスムーズなユーザー エクスペリエンスの確保の間で適切なバランスを見つける必要があります。. アクセストークン 悪意のある人の手に渡った場合の被害を最小限に抑えるため、寿命は短くする必要があります。同時に、 リフレッシュトークン 現在のアクセス トークンの有効期限が切れると新しいアクセス トークンが生成され、ユーザーが繰り返しログインする必要性が軽減されます。.
リフレッシュトークンは安全な方法で保管してください。盗難リスクを最小限に抑えるには、HTTPのみのCookieを使用するのが効果的です。また、侵害されたトークンを検出し、無効化するためのシステムを導入することも不可欠です。これには、トークンの使用パターンの監視や、無効化されたトークンのブラックリストの維持などが含まれます。有効期間の短いアクセストークンと、慎重に管理されたリフレッシュトークンを組み合わせることで、ユーザーにとって煩わしいことなく、強力なセキュリティを維持できます。.