Spring SecurityとSpring MVC for REST APIを使用してAngular 2アプリを使用しています。フロントエンドとバックアップの両方で認証を実装する前に、正常に動作していました。単純な基本認証を追加したので、カスタム認証トークンをバックエンドに送信する際に問題があります。私たちはweb.xml
でセットアップをCORSFilterし、すべてのAPIリクエストは、このフィルタによって傍受されている。このCORNフィルタを使用した角2 spring mvc 4.2.6およびspring security 4.0.1
if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
// CORS "pre-flight" request
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "X-AUTH-TOKEN");
response.addHeader("Access-Control-Max-Age", "60000");
}
のようなコードを持っており、あなたはそれが私たちのカスタム認証トークンを許可されて見るように、一つ、二つのフィルタを設定しています。
トークンを検証するためのカスタムフィルタを持つSpring Securityフィルタチェーンに入り、X-AUTH-TOKEN
をリクエストヘッダから取得しようとします。常にnull
を返します。
この値をnull
に設定している人は誰でも教えてください。私はフロントエンドがFirefoxデバッガツールに基づいて正しい値でX-AUTH-TOKEN
を送信していることを確認しました。そのトークンを取り、そのREST APIコールを作成するために郵便受けクライアントを使用した場合、正常に動作しています。 ChromeまたはFirefoxでフロントエンドをテストするときにのみ問題が発生します。
注:フロントエンドは、ポート4200で提供していますし、バックエンドは、あなたが許可されているメソッドにオプションを追加したい場合がありますポート8080
CORSフィルタで「OPTIONS」メソッドを追加した後、私はChromeが行ったOPTIONSリクエストに対するレスポンスが同じヘッダーを返すことを確認しています。そして、私は実際にリクエストを確認して、そのリクエストヘッダをサーバに送信していますが、依然としてカスタムJWTフィルタではnullを返しています。 – user509755