Java 为什么CF UAA check_令牌端点需要clientId/clientSecret?

Java 为什么CF UAA check_令牌端点需要clientId/clientSecret?,java,spring,oauth-2.0,cloudfoundry-uaa,Java,Spring,Oauth 2.0,Cloudfoundry Uaa,CloudFoundry的UAA有一个RemoteTokenServices类(也是SpringOAuth2的一部分),该类通过转到UAA服务器的check_令牌端点来进行授权令牌验证。 UAA有样本api和app应用程序,分别用作资源服务器和客户端应用程序 从示例api的spring-servlet.xml: <bean id="tokenServices" class="org.cloudfoundry.identity.uaa.oauth.RemoteTokenServices"&g

CloudFoundry的UAA有一个RemoteTokenServices类(也是SpringOAuth2的一部分),该类通过转到UAA服务器的check_令牌端点来进行授权令牌验证。 UAA有样本apiapp应用程序,分别用作资源服务器和客户端应用程序

从示例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>


您知道为什么此类(以及需要在授权标头中编码这些值的check_令牌端点)需要clientId和clientSecret吗?在我看来,它从资源服务器依赖于客户机应用程序。如果其中一个客户机密在此处被“硬编码”,我如何使用多个客户机应用程序?

我自己通过彻底阅读UAA找到了答案,但我仍然认为在UAA示例应用程序中它令人困惑:

  • clientId和clientSecret值应该是示例中api应用程序(api/apiclientsecret)的客户机id/secret,因为在调用check\u令牌端点时,资源服务器应该使用基本身份验证对UAA服务器进行身份验证,这样UAA就可以确保请求是由有效的,已注册的资源服务器
  • 要做到这一点,还必须将资源服务器注册为UAA中的客户端,并将客户端\ U凭据注册为授权授予类型
  • 应该检查的令牌在POST请求正文中发送