14

org.springframework.security.oauth2.provider.filterのOAuth2ProtectedResourceFilter:

Collection<String> resourceIds = auth.getClientAuthentication().getResourceIds();
if (resourceIds!=null && !resourceIds.isEmpty() && !resourceIds.contains(resourceId)) {
    throw new InvalidTokenException("Invalid token does not contain resource id ("+resourceId+"): " + token);                   
}

役に立たないと思います。このコードは何をチェックしますか?

4

2 に答える 2

6

私が収集したものに基づいて、それはリソース サービスの ID です。

API のバージョン管理のために、oauth トークン プロバイダー サーブレットとリソース サーバーを分離することを検討すると、より明確になります。たとえば、クライアント A (cA) が api1 へのアクセス権を持ち、クライアント B (cB) が api2 へのアクセス権を持っている場合、リソース サーバー xml で api1 の resource-id=api1 を指定し、クライアントの詳細を構成することで、このアクセスを強制します。 cA の場合は resourceIds="api1" であり、[cB,api2] の場合も同様です。

これにより、API アクセスを保護し、その保護宣言をクライアント ロールの宣言とは別に保つことができます。

于 2013-03-28T14:45:58.337 に答える
0

クライアントが特定のリソースを表示する権限を持っているかどうかをチェックしているようです。トークン変数がどのように関与しているかはわかりません。表示されていない関連コードがいくつかあるようです。

于 2012-04-17T20:21:46.400 に答える