Spring Securityは、2つの別々のjarファイルから2つの別々のポートで実行される2つの別々のSpringブートバックエンドサービスを保護しています。サービスの1つ(resource
, with full code at this link)は、フロントエンドのNode.jsサーバーからのGET要求に応答しますが、他のサービス(authserver
, will full code at this link.と呼ばれます)は応答しません。 authserver
アプリがnode.jsサーバーからのリクエストに応答できるように、春のセキュリティ設定を変更するにはどうすればよいですか?ここでnode.jsがSpringブートセキュリティからユーザプリンシパルを取得できない
は2つのバックエンドサービスへの要求を行いNode.jsのサーバーからexpress.jsコードです:
var url = require('url');
var request = require('request');
// expose the routes to our app with module.exports
module.exports = function(app) {
// application --------------------------------
app.get('/resource/**', function(req, res) {
request.get('http://localhost:9000/resource', function (error, response, body) {
if(error){console.log('ERROR with resource request.')}
if (!error){// && response.statusCode == 200) {
console.log(response.statusCode);
console.log(body);
};
});
console.log("You Hit The Resource Route ");
});
app.get('/user/**', function(req, res) {
request.get('http://localhost:9999/uaa/user', function (error, response, body) {
if(error){console.log('ERROR with user request.')}
if (!error){// && response.statusCode == 200) {
console.log(response.statusCode);
console.log(body);
};
});
console.log("You Hit The User Route ");
});
};
そして、ここではそれを示すnodemon
ログです:
1) authserver
アプリの/uaa/user
エンドポイントへのコールがresource
アプリの/resource
エンドポイントはを返したこと304
応答(春ブーツauthserver
アプリのログが要求を受信の証拠を示さない)、および
2)を得ました応答(春ブーツresource
アプリのログは、要求を受けたことを示してください):
[nodemon] starting `node server.js`
App listening on port 8080
GET /user 304 4.257 ms - -
You Hit The Resource Route
401
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}
私は、Webブラウザにhttp://localhost:9999/uaa/user
を入力すると与えて、要求を文書ログを作成するために、春のブートauthserver
アプリをトリガーないことを確認ブラウザでXML以下:あなたのAuthserverApplication.javaで
<oauth>
<error_description>
Full authentication is required to access this resource
</error_description>
<error>unauthorized</error>
</oauth>
こと問題を解決しませんでした。すぐ問題は、Node.jsルートを '/ user/** 'から'/user ** 'に変更する必要があったことです。これはSpringのバックエンドに呼び出されましたが、コードを追加してもしなくても、結果は不正なエラーになります。 – DollarCoffee
リクエストは、デフォルトでオンになっているCSRFフィルタによって傍受することもできます。 http.csrf()を追加してください。disable()あなたの問題を解決することを願っています。 – MGR