8

私はSpringアプリケーションを構築しましたが、RESTサービスを利用し、セキュリティのためにSpringアプリケーションを介して同じものを公開する必要があります。

つまり、私が使用する残りのサービスについては、私のアプリケーションだけが知っている必要があるセキュリティクレデンシャルを提供し、Springアプリケーションを介して同じサービスを公開します。

対応する認証で使用するすべてのRESTサービスに対してラッパーRESTサービスを記述し、Springアプリケーションの認証クレデンシャルで認証できるこれらのラッパーサービスを公開できます。

しかし、これは私が本質的に行っていることは多くの作業であり、Webサービスを消費し、いくつかの認証マッピングで同じものを公開します。春には、残りのサービスを通過するオプションがあります

4

1 に答える 1

5

HTTPリクエストタイプごとにRESTサービスを公開し、パス内の情報に基づいてルーティングしないのはなぜですか?たとえば(テストされていない、おそらくそのままでは機能しませんが、基本的な考え方はわかります):

@Autowired
RestTemplate restTemplate;

@Value("${rest.proxy.target.base.url}")
String targetBaseUrl;

@RequestMapping(value = "/restProxy/{restUrlPath}", method = RequestMethod.GET)
public @ResponseBody String restProxyGet(@PathVariable("restUrlPath") String restUrlPath) {
    return restTemplate.getForObject(targetBaseUrl+ "/" + restUrlPath, String.class);
}

@RequestMapping(value = "/restProxy/{restUrlPath}", method = RequestMethod.POST)
public @ResponseBody String restProxyPost(@PathVariable("restUrlPath") String restUrlPath, @RequestBody String body) {
    return restTemplate.postForObject(targetBaseUrl + "/" + restUrlPath, body, String.class);
}

//Can also add additional methods for PUT, DELETE, etc. if desired

さまざまなホストと通信する必要がある場合は、さまざまなターゲットベースURLを格納するマップへのキーとして機能する別のパス変数を追加するだけです。コントローラから、またはSpringSecurityのカスタム認証を介して必要な認証を追加できます。

あなたの質問は詳細についていくらか軽いので、あなたの特定のシナリオは物事を複雑にするかもしれませんが、基本的なアプローチはうまくいくはずです。

于 2013-01-30T17:10:17.510 に答える