14

Spring RESTful バックエンドを保護したい。1 つの方法 (正しい?) は、次のように OAuth 2.0 を使用することです。

http://www.youtube.com/watch?v=8uBcpsIEz2I

私のアーキテクチャでは、リソース サーバーと承認サーバーは同じエンティティではありません。私は本当にいくつかの JSON REST サービスを提供しているだけです。UI なし。OAuth2 RFCを読むと、次のように書かれています。

認可サーバーとリソース サーバー間のやり取りは、この仕様の範囲を超えています。認可サーバーは、リソースサーバーと同じサーバーでも、別のエンティティでもかまいません。1 つの認可サーバーが、複数のリソース サーバーで受け入れられるアクセス トークンを発行する場合があります。

私は自分の見解を説明するために使用しているcloudfoundry.com(上記のYouTubeビデオに関連する)で良い図を見つけました:

ここに画像の説明を入力

「トークン」プロバイダー: これは、たとえば google や facebook である可能性があります/する必要があります。

RESTful バックエンド: これは実際に私のコードです。次のような Spring RESTful サービス:

@Controller
@RequestMapping("/api/v1")
public class MyResourceToProtect {

    @Autowired
    private MyService service;

    @RequestMapping(value = "/resource/delete/{name}",
                    method = RequestMethod.DELETE,
                    consumes = MediaType.APPLICATION_JSON_VALUE,
                    headers = "Content-Type=application/json")
    @ResponseStatus(HttpStatus.OK)
    public void delete(@PathVariable("name") String name) {
        service.delete(name);
    }
}

(これは単なるサンプルコードです)

Now my question: Is it somehow possible to validate the access tokens which are generated by the AuthServer (Facebook, Google)? I know that I need to have a "token to user" mapping (database) somewhere on my ResourceServer. Basically I'd like to design my RESTful API like to one from PayPal:

https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/

But how can I handle the steps 1 & 2 if I want to use Facebook or Google as auth providers? Is this even possible?

Additional thought: Probably I need to provide my own /oauth2/token endpoint and then delegate to the underlying AuthProvider.

4

1 に答える 1