switched id tokens to entities, they're now access tokens also
still needs some work to get the auth object right, for now we're just copying from the access tokenpull/263/head
parent
eda84e1d58
commit
b8f701d9d8
|
@ -24,6 +24,7 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.CollectionTable;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.ElementCollection;
|
||||
|
@ -36,6 +37,7 @@ import javax.persistence.JoinColumn;
|
|||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Temporal;
|
||||
import javax.persistence.Transient;
|
||||
|
@ -72,7 +74,7 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
|
||||
private Jwt jwtValue; // JWT-encoded access token value
|
||||
|
||||
private IdToken idToken; // JWT-encoded OpenID Connect IdToken
|
||||
private OAuth2AccessTokenEntity idToken; // JWT-encoded OpenID Connect IdToken
|
||||
|
||||
private Date expiration;
|
||||
|
||||
|
@ -225,43 +227,33 @@ public class OAuth2AccessTokenEntity implements OAuth2AccessToken {
|
|||
}
|
||||
|
||||
/**
|
||||
* This is transient b/c the IdToken is not serializable. Instead,
|
||||
* the toString of the IdToken is persisted in idTokenString
|
||||
* @return the idToken
|
||||
*/
|
||||
@Transient
|
||||
public IdToken getIdToken() {
|
||||
@OneToOne(cascade=CascadeType.ALL) // one-to-one mapping for now
|
||||
@JoinColumn(name = "id_token_id")
|
||||
public OAuth2AccessTokenEntity getIdToken() {
|
||||
return idToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param idToken the idToken to set
|
||||
*/
|
||||
public void setIdToken(IdToken idToken) {
|
||||
public void setIdToken(OAuth2AccessTokenEntity idToken) {
|
||||
this.idToken = idToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the idTokenString
|
||||
*/
|
||||
@Basic
|
||||
@Column(name="id_token_string")
|
||||
@Transient
|
||||
public String getIdTokenString() {
|
||||
if (idToken != null) {
|
||||
return idToken.toString();
|
||||
return idToken.getValue(); // get the JWT string value of the id token entity
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param idTokenString the idTokenString to set
|
||||
* @throws IllegalArgumentException if "value" is not a properly formatted JWT string
|
||||
*/
|
||||
public void setIdTokenString(String idTokenString) {
|
||||
this.idToken = IdToken.parse(idTokenString);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the jwtValue
|
||||
*/
|
||||
|
|
|
@ -87,6 +87,7 @@ public class ConnectTokenEnhancer implements TokenEnhancer {
|
|||
|
||||
String userId = authentication.getName();
|
||||
|
||||
OAuth2AccessTokenEntity idTokenEntity = new OAuth2AccessTokenEntity();
|
||||
IdToken idToken = new IdToken();
|
||||
|
||||
IdTokenClaims claims = new IdTokenClaims();
|
||||
|
@ -98,6 +99,7 @@ public class ConnectTokenEnhancer implements TokenEnhancer {
|
|||
if (client.getIdTokenValiditySeconds() != null) {
|
||||
Date expiration = new Date(System.currentTimeMillis() + (client.getIdTokenValiditySeconds() * 1000L));
|
||||
claims.setExpiration(expiration);
|
||||
idTokenEntity.setExpiration(expiration);
|
||||
}
|
||||
|
||||
claims.setIssuer(configBean.getIssuer());
|
||||
|
@ -119,7 +121,13 @@ public class ConnectTokenEnhancer implements TokenEnhancer {
|
|||
logger.warn("Couldn't sign id token", e);
|
||||
}
|
||||
|
||||
token.setIdToken(idToken);
|
||||
|
||||
idTokenEntity.setJwt(idToken);
|
||||
|
||||
idTokenEntity.setAuthenticationHolder(token.getAuthenticationHolder());
|
||||
idTokenEntity.setScope(token.getScope());
|
||||
|
||||
token.setIdToken(idTokenEntity);
|
||||
}
|
||||
|
||||
return token;
|
||||
|
|
|
@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS access_token (
|
|||
refresh_token_id BIGINT,
|
||||
client_id VARCHAR(256),
|
||||
auth_holder_id BIGINT,
|
||||
id_token_string VARCHAR(4096)
|
||||
id_token_id BIGINT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS address (
|
||||
|
|
Loading…
Reference in New Issue