简体   繁体   English

Spring Oauth2 JdbcTokenStore Oracle数据库

[英]Spring Oauth2 JdbcTokenStore Oracle Database

i'm trying convert the jdbctoken store schema here https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql 我正在尝试在此处转换jdbctoken存储架构https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql

to

CREATE TABLE EISBIT.OAUTH_ACCESS_TOKEN
(
  TOKEN_ID           VARCHAR2(256 BYTE),
  TOKEN              CLOB,
  AUTHENTICATION_ID  VARCHAR2(256 BYTE),
  USER_NAME          VARCHAR2(256 BYTE),
  CLIENT_ID          VARCHAR2(256 BYTE),
  AUTHENTICATION     CLOB,
  REFRESH_TOKEN      VARCHAR2(256 BYTE)
)

ths

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
    endpoints
            .tokenStore(tokenStore())
            .authenticationManager(this.authenticationManager);
}

but i get this exception when try a 但是当尝试一个

 2015-07-03 14:34:01.300 WARN 10952 --- [pr-8080-exec-13] ossoptoken.store.JdbcTokenStore : Failed to deserialize access token for b14fa3b1-5a5a-4d0c-9112-416997c2dc83 java.lang.IllegalArgumentException: java.io.StreamCorruptedException: invalid stream header: 00540001 at org.springframework.security.oauth2.common.util.SerializationUtils.deserialize(SerializationUtils.java:40) at org.springframework.security.oauth2.provider.token.store.JdbcTokenStore.deserializeAccessToken(JdbcTokenStore.java:397) at org.springframework.security.oauth2.provider.token.store.JdbcTokenStore$2.mapRow(JdbcTokenStore.java:162) at org.springframework.security.oauth2.provider.token.store.JdbcTokenStore$2.mapRow(JdbcTokenStore.java:1) at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:93) at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:60) at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:708) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:695) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:727) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:737) at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:811) at org.springframework.security.oauth2.provider.token.store.JdbcTokenStore.readAccessToken(JdbcTokenStore.java:160) 

error when try to read the tokenstore :(.. 尝试读取令牌库时出错:(。

modify CLOB to BLOB 将CLOB修改为BLOB

CREATE TABLE EISBIT.OAUTH_ACCESS_TOKEN
(
  TOKEN_ID           VARCHAR2(256 BYTE),
  TOKEN              BLOB,
  AUTHENTICATION_ID  VARCHAR2(256 BYTE),
  USER_NAME          VARCHAR2(256 BYTE),
  CLIENT_ID          VARCHAR2(256 BYTE),
  AUTHENTICATION     BLOB,
  REFRESH_TOKEN      VARCHAR2(256 BYTE)
)

I was working on the same issue. 我正在处理同一问题。

Visit this link if anybody still need the complete working schema. 如果仍然有人需要完整的工作方案,请访问链接。

Hope this helps. 希望这可以帮助。

You have to map this to RAW or LONG RAW datatype in Oracle . 您必须将此映射到Oracle中的RAW或LONG RAW数据类型。 We faced this exception and had to change the following fields in OAUTH tables . 我们遇到了此异常,因此不得不更改OAUTH表中的以下字段。

  1. OAUTH_ACCESS_TOKEN OAUTH_ACCESS_TOKEN

    TOKEN RAW 令牌原始

    AUTHENTICATION LONG RAW 长时间认证

    REFRESH_TOKEN RAW REFRESH_TOKEN RAW

  2. OAUTH_REFRESH_TOKEN OAUTH_REFRESH_TOKEN

    TOKEN RAW 令牌原始

    AUTHENTICATION LONG RAW 长时间认证

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM