簡體   English   中英

Spring Oauth2 JdbcTokenStore Oracle數據庫

[英]Spring Oauth2 JdbcTokenStore Oracle Database

我正在嘗試在此處轉換jdbctoken存儲架構https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql

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)
)

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

但是當嘗試一個

 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) 

嘗試讀取令牌庫時出錯:(。

將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)
)

我正在處理同一問題。

如果仍然有人需要完整的工作方案,請訪問鏈接。

希望這可以幫助。

您必須將此映射到Oracle中的RAW或LONG RAW數據類型。 我們遇到了此異常,因此不得不更改OAUTH表中的以下字段。

  1. OAUTH_ACCESS_TOKEN

    令牌原始

    長時間認證

    REFRESH_TOKEN RAW

  2. OAUTH_REFRESH_TOKEN

    令牌原始

    長時間認證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM