Spring OAuth2 JDBCTokenStore performance and database schema

I am using MySQL5.5 + REST (Jersey) + Spring Security + Spring OAuth2. I am currently doing performance testing and notice that

org.springframework.security.oauth2.provider.token.store.JdbcTokenStore.readAuthentication

is very slow .. especially this part of the method:

authentication = jdbcTemplate.queryForObject(selectAccessTokenAuthenticationSql,
                    new RowMapper<OAuth2Authentication>() {
                        public OAuth2Authentication mapRow(ResultSet rs, int rowNum) throws SQLException {
                            return deserializeAuthentication(rs.getBytes(2));
                        }
                    }, extractTokenKey(token));

      

To improve performance, I'm going to add a MySQL index to the following query:

private static final String DEFAULT_ACCESS_TOKEN_AUTHENTICATION_SELECT_STATEMENT = "select token_id, authentication from oauth_access_token where token_id = ?";

      

on token_id

, but the main problem is that regarding the official oauth2 Spring database schema like https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/ test / resources / schema.sql

create table oauth_access_token (
  token_id VARCHAR(256),
  token LONGVARBINARY,
  authentication_id VARCHAR(256) PRIMARY KEY,
  user_name VARCHAR(256),
  client_id VARCHAR(256),
  authentication LONGVARBINARY,
  refresh_token VARCHAR(256)
);

      

token_id

is VARCHAR(256)

also due to MySQL bugs or limitations. I cannot add this index (for example The specified MySQL key was too long ) ..

So my question is, is token_id

how mandatory VARCHAR(256)

or can I change it to VARCHAR(255)

?

+3


source to share





All Articles