如何使用Spring Security创建具有不同有效期的OAuth令牌?

njthzxwz  于 2023-06-04  发布在  Spring
关注(0)|答案(1)|浏览(554)

我能够在我的AuthorizationServerConfigurerAdapter中使用Spring Security制作OAuth令牌:

@Override
public void configure(final ClientDetailsServiceConfigurer clients) throws Exception {
    clients
        .inMemory()
            .withClient(AppConst.CLIENT_ID)
                .secret(AppConst.CLIENT_SECRET)
                .authorizedGrantTypes(AppConst.GRANT_TYPE_PASSWORD, AppConst.GRANT_TYPE_REFRESH_TOKEN)
                .scopes(AppConst.TOKEN_HEADER)
                // Here I provide the validity timeperiod
                .accessTokenValiditySeconds(AppConst.ACCESS_TOKEN_VALID_SECONDS);
}

所以我的用例是,我想为移动的应用程序用户(比如1周)和Web应用程序用户(比如1小时)提供不同的令牌有效期。
除了全球配置之外,如何才能做到这一点?

llycmphe

llycmphe1#

要处理您的场景,最好区分两种类型的客户端(如移动的应用程序用户和Web应用程序用户)。这样,您就可以提供不同的OAuth令牌有效期。您需要做的是根据客户端ID或任何其他唯一属性来标识这些客户端。

@Override
public void configure(final ClientDetailsServiceConfigurer clients) throws Exception {
    clients
        .inMemory()
            .withClient(AppConst.MOBILE_APP_CLIENT_ID)
                .secret(AppConst.MOBILE_APP_CLIENT_SECRET)
                .authorizedGrantTypes(AppConst.GRANT_TYPE_PASSWORD, AppConst.GRANT_TYPE_REFRESH_TOKEN)
                .scopes(AppConst.TOKEN_HEADER)
                // Set the validity period for mobile app users
                .accessTokenValiditySeconds(AppConst.MOBILE_APP_ACCESS_TOKEN_VALID_SECONDS)
            .and()
            .withClient(AppConst.WEB_APP_CLIENT_ID)
                .secret(AppConst.WEB_APP_CLIENT_SECRET)
                .authorizedGrantTypes(AppConst.GRANT_TYPE_PASSWORD, AppConst.GRANT_TYPE_REFRESH_TOKEN)
                .scopes(AppConst.TOKEN_HEADER)
                // Set the validity period for web app users
                .accessTokenValiditySeconds(AppConst.WEB_APP_ACCESS_TOKEN_VALID_SECONDS);
}

在这种情况下,MOBILE_APP_CLIENT_IDWEB_APP_CLIENT_ID分别是移动的应用和Web应用用户的标识符。其访问令牌的相应有效期由MOBILE_APP_ACCESS_TOKEN_VALID_SECONDSWEB_APP_ACCESS_TOKEN_VALID_SECONDS确定。
因此,当服务器接收到OAuth令牌的请求时,它将根据客户端的身份分发具有有效期的令牌。希望这有帮助!

相关问题