【问题标题】:ResourceOwnerPasswordResourceDetails with Oauth2RestTemplate, setting username and passwordResourceOwnerPasswordResourceDetails 与 Oauth2RestTemplate,设置用户名和密码
【发布时间】:2015-01-05 07:59:00
【问题描述】:

我目前正在使用我的控制器配置我的 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。我将如何使用它向访问令牌端点发出请求,为访问令牌提供“用户名”、“密码”和“令牌”?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2014-05-25
      相关资源
      最近更新 更多