2013-06-26 11 views
16

मैं टोकन पीढ़ी के लिए वसंत के साथ OAuth 2.0 का उपयोग कर रहा हूं और मैं मैन्युअल रूप से expire_in सेट करना चाहता हूं ताकि टोकन मेरे मानदंडों के अनुसार समाप्त हो सके। कोई मेरी मदद करता है?OAUTH 2.0 में expire_in कैसे सेट करें?

यह मेरी प्रतिक्रिया है:

{ 
    access_token: "c7a6cb95-1506-40e7-87d1-ddef0a239f64" 
    token_type: "bearer" 
    expires_in: 43199 
    scope: "read" 
} 

उत्तर

-4
public interface OAuth2AccessToken { 

    public static String BEARER_TYPE = "Bearer"; 

    public static String OAUTH2_TYPE = "OAuth2"; 

    /** 
    * The access token issued by the authorization server. This value is REQUIRED. 
    */ 
    public static String ACCESS_TOKEN = "access_token"; 

    /** 
    * The type of the token issued as described in <a 
    * href="http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-7.1">Section 7.1</a>. Value is case insensitive. 
    * This value is REQUIRED. 
    */ 
    public static String TOKEN_TYPE = "token_type"; 

    /** 
    * The lifetime in seconds of the access token. For example, the value "3600" denotes that the access token will 
    * expire in one hour from the time the response was generated. This value is OPTIONAL. 
    */ 
    public static String EXPIRES_IN = "expires_in"; 

    /** 
    * The refresh token which can be used to obtain new access tokens using the same authorization grant as described 
    * in <a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-6">Section 6</a>. This value is OPTIONAL. 
    */ 
    public static String REFRESH_TOKEN = "refresh_token"; 

    /** 
    * The scope of the access token as described by <a 
    * href="http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.3">Section 3.3</a> 
    */ 
    public static String SCOPE = "scope"; 

    /** 
    * The additionalInformation map is used by the token serializers to export any fields used by extensions of OAuth. 
    * @return a map from the field name in the serialized token to the value to be exported. The default serializers 
    * make use of Jackson's automatic JSON mapping for Java objects (for the Token Endpoint flows) or implicitly call 
    * .toString() on the "value" object (for the implicit flow) as part of the serialization process. 
    */ 
    Map<String, Object> getAdditionalInformation(); 

    Set<String> getScope(); 

    OAuth2RefreshToken getRefreshToken(); 

    String getTokenType(); 

    boolean isExpired(); 

    Date getExpiration(); 

    int getExpiresIn(); 

    String getValue(); 

} 
10

कॉन्फ़िगर अपनी OAuth विन्यास अपनी बीन TokenServices बदल रहा है और accessTokenValiditySeconds की स्थापना संपत्ति:

<bean id="tokenServices" 
    class="org.springframework.security.oauth2.provider.token.DefaultTokenServices"> 
    <property name="accessTokenValiditySeconds" value="1" /> 
    <property name="tokenStore" ref="tokenStore" /> 
    <property name="supportRefreshToken" value="true" /> 
    <property name="clientDetailsService" ref="clientDetails" /> 
</bean> 
1
  • AuthorizationCodeAccessTokenProvider के एक कस्टम कक्षा बनाएं और वें ओवरराइड ई माता पिता

    public method obtainAccessToken(OAuth2ProtectedResourceDetails details, AccessTokenRequest request) 
    
  • अपने कस्टम वर्ग के ओवरराइड विधि में, अपनी मूल वर्ग के कार्यक्रम तर्क पर कॉल करें:

    DefaultOAuth2AccessToken token = super.obtainAccessToken(details, request); 
    
  • यह एक AccessToken वापस आ जाएगी। अब, आप बस सीधे उस टोकन की समय सीमा समाप्त हो मूल्य में हेरफेर करने, पिछले token.setExpiresIn(int timestamp)

16

यह एक ClientBuilder एक ClientDetailsServiceConfigurer से प्राप्त के साथ सेट किया जा सकता से एक टाइमस्टैम्प प्रदान करके की है।

@Configuration 
@EnableAuthorizationServer 
public class OAuth2Config extends AuthorizationServerConfigurerAdapter { 

    @Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
     clients.inMemory() 
      .withClient("client") 
      .secret("secret") 
      .authorizedGrantTypes("authorization_code", "refresh_token", "password") 
      .scopes("app") 
      .accessTokenValiditySeconds(30); 
    } 

    // ... additional configuration 
} 

या सीधे आपकी आवश्यकता के आधार पर DefaultTokenServices पर।

@Configuration 
@EnableAuthorizationServer 
public class OAuth2Config extends AuthorizationServerConfigurerAdapter { 
    @Override 
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { 

     // optionally here you could just get endpoints.getConsumerTokenService() 
     // and cast to DefaultTokenServices and just set values needed 

     DefaultTokenServices tokenServices = new DefaultTokenServices(); 
     tokenServices.setTokenStore(endpoints.getTokenStore()); 
     tokenServices.setSupportRefreshToken(true); 
     tokenServices.setClientDetailsService(endpoints.getClientDetailsService()); 
     tokenServices.setTokenEnhancer(endpoints.getTokenEnhancer()); 
     tokenServices.setAccessTokenValiditySeconds(60); 

     endpoints.tokenServices(tokenServices);    
    } 
} 
0

आप grails सुरक्षा OAuth2 प्रदाता उपयोग कर रहे हैं तो आप केवल बदल सकते हैं grails एप्लिकेशन के अंतर्गत/conf/वसंत/resources.groovy

import org.springframework.security.oauth2.provider.token.DefaultTokenServices 

// Place your Spring DSL code here  

beans = { 

    tokenServices(DefaultTokenServices){ 
    accessTokenValiditySeconds = 600; 
    tokenStore = ref('tokenStore') 
    supportRefreshToken = true; 
    clientDetailsService = ref('clientDetailsService') 
    } 

} 
4

तुम भी application.yaml file में DefaultTokenServices कॉन्फ़िगर कर सकते हैं।

security: 
    oauth2: 
    client: 
     clientId: client-id 
     clientSecret: client-secret 
     authorized-grant-types: authorization_code,refresh_token,password 
     scope: openid 
     access-token-validity-seconds: 30 
+1

security.oauth2.client.access-टोकन-वैधता-सेकंड = 30 – alayor

संबंधित मुद्दे