Spring Security Oauth2 — Episódio 3.2
Continuando o episódio anterior, vamos falar do domínio jdbcTokenStore e dessas classes.
Você já pode até ter visto um schema de tabelas que precisa criar para o jdbcTokenStore mas pouco provavelmente te falaram onde você encontra essa informação, é isso que quero passar aqui.
No spring security oauth2 existe um pacote chamado provider, é ele que fornece as informações sobre o schema de tabelas que você precisa ter para trabalhar com jdbctoken. Existem pacotes internos onde cada um vai possuir uma class “JdbcXPTO” mapeando os objetos de banco e nelas você pode verificar os nomes dos campos e tipos alem dos nomes das tabelas que você precisa construir para que o spring security gerencie para você.
São eles:
package approval{
class JdbcApprovalStore{
tabela oauth_approvals
user_id String, client_id String, scope String, expires_at Date (Use TIMESTAMP pois é o tipo que é utilizado na persistência), status Enum(APROVED, DENIED), last_update_at Date (Use TIMESTAMP pois é o tipo que é utilizado na persistência)
}
}
package client{
class JdbcClientDetailsService{
tabela oauth_client_details
clientSecret String, client_id String, scope String, resource_ids Set<String>, authorized_grant_types Set<String>, redirect_uri Set<String>, autoapprove Set<String>, authorities List<GrantedAuthority> (adote VARCHAR(256),access_token_validity Integer, refresh_token_validity Integer ,additional_information(adote VARCHAR(4096))
}
}
package code {
class JdbcAuthorizationCodeServices{
tabela oauth_code
code Types.VARCHAR, authentication Types.BLOB -OBS: Na class, você pode verificar que a tipagem é explícita.
}
}
package token {
class JdbcTokenStore{
tabela oauth_access_token
token_id Types.VARCHAR, token Types.BLOB, authentication_id Types.VARCHAR, user_name Types.VARCHAR, client_id Types.VARCHAR, authentication Types.BLOB, refresh_token Types.VARCHAR — OBS: Na class, você pode verificar que a tipagem é explícita.
}
class JdbcTokenStore{
tabela oauth_refresh_token
token_id Types.VARCHAR, token Types.BLOB, authentication Types.BLOB — OBS: Na class, você pode verificar que a tipagem é explícita.
}
}
Detalhe importante:
Existe uma tabela que não está no package provider.
Ela está no package token que fica dentro do package client e você pode conhecer ela abaixo.
class JdbcClientTokenServices
tabela oauth_client_token
token_id Types.VARCHAR, token Types.BLOB, authentication_id Types.VARCHAR, user_name Types.VARCHAR, client_id Types.VARCHAR