我目前正在使用我的控制器配置我的 Oauth2RestTemplate。所述控制器将接收要在 ResourceOwnerPasswordResourceDetails 中设置的用户用户名和密码,但是,我没有看到这是如何设置的。此应用程序用于 Oauth2 客户端设置。
//An extention of ResourceOwnerPasswordResourceDetails that adds a property 'token'.
<bean id="cPassword" class="com.cointraders.site.overrides.TokenOauthResourceDetails">
<property name="grantType" value="c_password"></property>
<property name="clientAuthenticationScheme" value="header"></property>
<property name="clientId" value="cointraders"></property>
<property name="clientSecret" value="p@ssw0rd"></property>
<property name="accessTokenUri" value="${oauth.accessTokenUri}"></property>
</bean>
//My controller using the 'cPassword' bean above
<bean id="loginController" class="com.cointraders.site.controllers.LoginController">
<property name="checkCredentialRest">
<oauth:rest-template resource="cPassword">
</oauth:rest-template>
</property>
</bean>
//My Controller
@RequestMapping(value="/login")
public class LoginController {
private OAuth2RestTemplate checkCredentialRest;
private OAuth2RestTemplate loginCredentialRest;
public void setCheckCredentialRest(OAuth2RestTemplate checkCredentialRest) {
this.checkCredentialRest = checkCredentialRest;
}
public void setLoginCredentialRest(OAuth2RestTemplate loginCredentialRest) {
this.loginCredentialRest = loginCredentialRest;
}
@RequestMapping(method=RequestMethod.POST)
@ResponseStatus(value=HttpStatus.OK)
public void verifyCredential(@RequestBody LoginCredential creds)
{
}
}
正如所见,从我的“verifyCredential”中,我传递了映射到数据映射器 LoginCredential 的凭据。此类具有用户的“用户名”、“密码”和“令牌”属性。在这一点上,我认为将 LoginCredential 的对象属性传递给 OAuth2RestTemplate loginCredentialRest 会很容易,但事实并非如此。
此外,我还使用访问令牌端点 (accessTokenUri) 配置了 ResourceOwnerPasswordResourceDetails,并且基本上将此对象连接到 Oauth2RestTemplate。我将如何使用它向访问令牌端点发出请求,为访问令牌提供“用户名”、“密码”和“令牌”?