CloudFoundry の UAA には、UAA サーバーの check_token エンドポイントに移動して認証トークンの検証を行う RemoteTokenServices クラス (Spring oauth2 の一部) があります。UAA には、それぞれリソース サーバーとクライアント アプリケーションとして機能するサンプルAPIとアプリアプリケーションがあります。
サンプルAPI のspring-servlet.xml から:
<bean id="tokenServices" class="org.cloudfoundry.identity.uaa.oauth.RemoteTokenServices">
<property name="checkTokenEndpointUrl" value="${checkTokenEndpointUrl}" />
<property name="clientId" value="app" />
<property name="clientSecret" value="appclientsecret" />
</bean>
このクラス (および Authorization ヘッダーにエンコードされたこれらの値を必要とする check_token エンドポイント) が clientId と clientSecret を必要とする理由を知っていますか? リソースサーバーからクライアントアプリケーションに依存しているように思えます。ここでクライアント シークレットの 1 つが「ハードコード」されている場合、複数のクライアント アプリケーションを使用するにはどうすればよいですか?