Vue.js を使用して、Spring Boot を使用して RESTful API に JWT ログイン フォームを実装しようとしていますが、ベアラー トークンをリクエストに追加しない限り、取得できるのは 403 ステータスだけです。 エンドポイントが許可なしでアクセスできるように設定しており、postman では認証ヘッダーなしでリクエストを送信できます。 これは Spring でのセキュリティ構成の一部です:
リーリーこれは、POST リクエストを行う vue.js サービスです:
リーリー同じトークンを要求した部分へのアクセスにトークンを必要としないようにしたいのですが…何か方法はありますか?
P粉3478048962024-03-28 19:56:08
100% 確信はありませんが、403 は CSRF 保護が原因である可能性が高くなります。サーバー上で JWT 認証を有効にする方法の例については、JWT ログイン例を確認してください。
要約すると、HTTP 基本 (.httpBasic()
) を有効にし、セッション管理 (.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
) を無効にすると、CSRF は次のことを行うことができます。無効にすることもできます (.csrf() .disable()
)。ステートレス サーバーは (セッション管理の観点から) CSRF 保護の影響を受けにくいため、これは目的を達成するために推奨される方法です。
独自の認証エンドポイントを実装することもできます。以下にその例を示します。その場合、.httpBasic()
を有効にする必要はありません。この場合、 .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
を使用できます。 JWT 認証の詳細 (その理由とそうでない理由) については、この Tanzu Tuesday Talk をご覧ください。
サーバー上のどのような形式のセッションでも CSRF 攻撃に対して脆弱になるため、JSESSIONID
または同様のものがブラウザーに入らないようにすることが重要であることを指摘することが重要です。同様の質問が以前にも頻繁に寄せられているため、この質問と他のいくつかの同様の質問を参照してください。