ResourceOwnerPasswordResourceDetails with Oauth2RestTemplate,设置用户名和密码

时间:2014-11-08 16:58:34

标签: java spring-mvc spring-security spring-security-oauth2

我目前处于用控制器配置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&#39;我传递映射到datamapper LoginCredential的凭据。此类包含&#39;用户名&#39;,&#39;密码&#39;和#39;令牌&#39;为用户。在这一点上,我很兴奋将LoginCredential的对象属性传递给OAuth2RestTemplate loginCredentialRest很容易,但事实并非如此。

此外,我已使用访问令牌端点(accessTokenUri)配置ResourceOwnerPasswordResourceDetails,并且基本将此对象连接到Oauth2RestTemplate。我如何使用它向访问令牌端点发出请求,提供&#34;用户名&#34;,&#34;密码&#34;和#34;令牌&#34;用于访问令牌?

1 个答案:

答案 0 :(得分:0)

我不确定我是否真的了解它或您的用例的任何细节,但在Spring OAuth 2.0.4中,您可以在调用{{1}之前将用户凭据添加到AccessTokenRequest (即在你有一个访问令牌给它之前不使用AccessTokenProvider。)