added wrapper classes for JWE/JWS algorithms, switched client entity model to use and store them.

pull/306/merge
Justin Richer 2013-02-19 13:27:16 -05:00
parent 6dc9020a31
commit 1f50945831
3 changed files with 204 additions and 54 deletions

View File

@ -0,0 +1,59 @@
/**
*
*/
package org.mitre.jose;
import javax.persistence.Basic;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import com.nimbusds.jose.JWEAlgorithm;
/**
*
* Wrapper class for Nimbus JOSE objects to fit into JPA
*
* @author jricher
*
*/
@Entity
@Embeddable
public class JWEAlgorithmEntity {
private JWEAlgorithm algorithm;
/**
* Get the name of this algorithm, return null if no algorithm set.
* @return
*/
@Basic
public String getAlgorithm() {
if (algorithm != null) {
return algorithm.getName();
} else {
return null;
}
}
/**
* Set the name of this algorithm.
* Calls JWEAlgorithm.parse()
* @param algorithmName
*/
public void setAlgorithm(String algorithmName) {
if (algorithmName != null) {
algorithm = JWEAlgorithm.parse(algorithmName);
} else {
algorithm = null;
}
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "JWEAlgorithmEntity [algorithm=" + algorithm + "]";
}
}

View File

@ -0,0 +1,77 @@
/**
*
*/
package org.mitre.jose;
import javax.persistence.Basic;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.Transient;
import com.nimbusds.jose.JWSAlgorithm;
/**
*
* Wrapper class for Nimbus JOSE objects to fit into JPA
*
* @author jricher
*
*/
@Entity
@Embeddable
public class JWSAlgorithmEntity {
private JWSAlgorithm algorithm;
/**
* Get the name of this algorithm, return null if no algorithm set.
* @return
*/
@Basic
public String getAlgorithmName() {
if (algorithm != null) {
return algorithm.getName();
} else {
return null;
}
}
/**
* Set the name of this algorithm.
* Calls JWSAlgorithm.parse()
* @param algorithmName
*/
public void setAlgorithmName(String algorithmName) {
if (algorithmName != null) {
algorithm = JWSAlgorithm.parse(algorithmName);
} else {
algorithm = null;
}
}
/**
* @return the algorithm
*/
@Transient
public JWSAlgorithm getAlgorithm() {
return algorithm;
}
/**
* @param algorithm the algorithm to set
*/
public void setAlgorithm(JWSAlgorithm algorithm) {
this.algorithm = algorithm;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "JWSAlgorithmEntity [algorithm=" + algorithm + "]";
}
}

View File

@ -23,10 +23,13 @@ import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Basic; import javax.persistence.Basic;
import javax.persistence.CollectionTable; import javax.persistence.CollectionTable;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.ElementCollection; import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EnumType; import javax.persistence.EnumType;
import javax.persistence.Enumerated; import javax.persistence.Enumerated;
@ -40,8 +43,8 @@ import javax.persistence.NamedQuery;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Transient; import javax.persistence.Transient;
import org.mitre.jwt.encryption.JweAlgorithms; import org.mitre.jose.JWEAlgorithmEntity;
import org.mitre.jwt.signer.JwsAlgorithm; import org.mitre.jose.JWSAlgorithmEntity;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.provider.ClientDetails; import org.springframework.security.oauth2.provider.ClientDetails;
@ -99,17 +102,17 @@ public class ClientDetailsEntity implements ClientDetails {
private String x509EncryptionUrl; private String x509EncryptionUrl;
private String sectorIdentifierUrl; private String sectorIdentifierUrl;
private JwsAlgorithm requireSignedRequestObject; private JWSAlgorithmEntity requireSignedRequestObject;
private JwsAlgorithm userInfoSignedResponseAlg; private JWSAlgorithmEntity userInfoSignedResponseAlg;
private JweAlgorithms userInfoEncryptedResponseAlg; private JWEAlgorithmEntity userInfoEncryptedResponseAlg;
private JweAlgorithms userInfoEncryptedResponseEnc; private JWEAlgorithmEntity userInfoEncryptedResponseEnc;
private JweAlgorithms userInfoEncryptedResponseInt; private JWEAlgorithmEntity userInfoEncryptedResponseInt;
private JwsAlgorithm idTokenSignedResponseAlg; private JWSAlgorithmEntity idTokenSignedResponseAlg;
private JweAlgorithms idTokenEncryptedResponseAlg; private JWEAlgorithmEntity idTokenEncryptedResponseAlg;
private JweAlgorithms idTokenEncryptedReponseEnc; private JWEAlgorithmEntity idTokenEncryptedReponseEnc;
private JweAlgorithms idTokenEncryptedResponseInt; private JWEAlgorithmEntity idTokenEncryptedResponseInt;
private Integer defaultMaxAge; private Integer defaultMaxAge;
private boolean requireAuthTime = false; private boolean requireAuthTime = false;
@ -672,100 +675,111 @@ public class ClientDetailsEntity implements ClientDetails {
this.sectorIdentifierUrl = sectorIdentifierUrl; this.sectorIdentifierUrl = sectorIdentifierUrl;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="requre_signed_request_object") @AttributeOverrides({
public JwsAlgorithm getRequireSignedRequestObject() { @AttributeOverride(name = "algorithmName", column=@Column(name="requre_signed_request_object"))
})
public JWSAlgorithmEntity getRequireSignedRequestObject() {
return requireSignedRequestObject; return requireSignedRequestObject;
} }
public void setRequireSignedRequestObject( public void setRequireSignedRequestObject(JWSAlgorithmEntity requireSignedRequestObject) {
JwsAlgorithm requireSignedRequestObject) {
this.requireSignedRequestObject = requireSignedRequestObject; this.requireSignedRequestObject = requireSignedRequestObject;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="user_info_signed_response_alg") @AttributeOverrides({
public JwsAlgorithm getUserInfoSignedResponseAlg() { @AttributeOverride(name = "algorithmName", column=@Column(name="user_info_signed_response_alg"))
})
public JWSAlgorithmEntity getUserInfoSignedResponseAlg() {
return userInfoSignedResponseAlg; return userInfoSignedResponseAlg;
} }
public void setUserInfoSignedResponseAlg(JwsAlgorithm userInfoSignedResponseAlg) { public void setUserInfoSignedResponseAlg(JWSAlgorithmEntity userInfoSignedResponseAlg) {
this.userInfoSignedResponseAlg = userInfoSignedResponseAlg; this.userInfoSignedResponseAlg = userInfoSignedResponseAlg;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="user_info_encrypted_response_alg") @AttributeOverrides({
public JweAlgorithms getUserInfoEncryptedResponseAlg() { @AttributeOverride(name = "algorithmName", column=@Column(name="user_info_encrypted_response_alg"))
})
public JWEAlgorithmEntity getUserInfoEncryptedResponseAlg() {
return userInfoEncryptedResponseAlg; return userInfoEncryptedResponseAlg;
} }
public void setUserInfoEncryptedResponseAlg( public void setUserInfoEncryptedResponseAlg(JWEAlgorithmEntity userInfoEncryptedResponseAlg) {
JweAlgorithms userInfoEncryptedResponseAlg) {
this.userInfoEncryptedResponseAlg = userInfoEncryptedResponseAlg; this.userInfoEncryptedResponseAlg = userInfoEncryptedResponseAlg;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="user_info_encrypted_response_enc") @AttributeOverrides({
public JweAlgorithms getUserInfoEncryptedResponseEnc() { @AttributeOverride(name = "algorithmName", column=@Column(name="user_info_encrypted_response_enc"))
})
public JWEAlgorithmEntity getUserInfoEncryptedResponseEnc() {
return userInfoEncryptedResponseEnc; return userInfoEncryptedResponseEnc;
} }
public void setUserInfoEncryptedResponseEnc( public void setUserInfoEncryptedResponseEnc(JWEAlgorithmEntity userInfoEncryptedResponseEnc) {
JweAlgorithms userInfoEncryptedResponseEnc) {
this.userInfoEncryptedResponseEnc = userInfoEncryptedResponseEnc; this.userInfoEncryptedResponseEnc = userInfoEncryptedResponseEnc;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="user_info_encrypted_response_int") @AttributeOverrides({
public JweAlgorithms getUserInfoEncryptedResponseInt() { @AttributeOverride(name = "algorithmName", column=@Column(name="user_info_encrypted_response_int"))
})
public JWEAlgorithmEntity getUserInfoEncryptedResponseInt() {
return userInfoEncryptedResponseInt; return userInfoEncryptedResponseInt;
} }
public void setUserInfoEncryptedResponseInt( public void setUserInfoEncryptedResponseInt(JWEAlgorithmEntity userInfoEncryptedResponseInt) {
JweAlgorithms userInfoEncryptedResponseInt) {
this.userInfoEncryptedResponseInt = userInfoEncryptedResponseInt; this.userInfoEncryptedResponseInt = userInfoEncryptedResponseInt;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="id_token_signed_response_alg") @AttributeOverrides({
public JwsAlgorithm getIdTokenSignedResponseAlg() { @AttributeOverride(name = "algorithmName", column=@Column(name="id_token_signed_response_alg"))
})
public JWSAlgorithmEntity getIdTokenSignedResponseAlg() {
return idTokenSignedResponseAlg; return idTokenSignedResponseAlg;
} }
public void setIdTokenSignedResponseAlg(JwsAlgorithm idTokenSignedResponseAlg) { public void setIdTokenSignedResponseAlg(JWSAlgorithmEntity idTokenSignedResponseAlg) {
this.idTokenSignedResponseAlg = idTokenSignedResponseAlg; this.idTokenSignedResponseAlg = idTokenSignedResponseAlg;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="id_token_encrypted_response_alg") @AttributeOverrides({
public JweAlgorithms getIdTokenEncryptedResponseAlg() { @AttributeOverride(name = "algorithmName", column=@Column(name="id_token_encrypted_response_alg"))
})
public JWEAlgorithmEntity getIdTokenEncryptedResponseAlg() {
return idTokenEncryptedResponseAlg; return idTokenEncryptedResponseAlg;
} }
public void setIdTokenEncryptedResponseAlg( public void setIdTokenEncryptedResponseAlg(JWEAlgorithmEntity idTokenEncryptedResponseAlg) {
JweAlgorithms idTokenEncryptedResponseAlg) {
this.idTokenEncryptedResponseAlg = idTokenEncryptedResponseAlg; this.idTokenEncryptedResponseAlg = idTokenEncryptedResponseAlg;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="id_token_encrypted_response_enc") @AttributeOverrides({
public JweAlgorithms getIdTokenEncryptedReponseEnc() { @AttributeOverride(name = "algorithmName", column=@Column(name="id_token_encrypted_response_enc"))
})
public JWEAlgorithmEntity getIdTokenEncryptedReponseEnc() {
return idTokenEncryptedReponseEnc; return idTokenEncryptedReponseEnc;
} }
public void setIdTokenEncryptedReponseEnc( public void setIdTokenEncryptedReponseEnc(JWEAlgorithmEntity idTokenEncryptedReponseEnc) {
JweAlgorithms idTokenEncryptedReponseEnc) {
this.idTokenEncryptedReponseEnc = idTokenEncryptedReponseEnc; this.idTokenEncryptedReponseEnc = idTokenEncryptedReponseEnc;
} }
@Enumerated(EnumType.STRING) @Embedded
@Column(name="id_token_encrypted_response_int") @AttributeOverrides({
public JweAlgorithms getIdTokenEncryptedResponseInt() { @AttributeOverride(name = "algorithmName", column=@Column(name="id_token_encrypted_response_int"))
})
public JWEAlgorithmEntity getIdTokenEncryptedResponseInt() {
return idTokenEncryptedResponseInt; return idTokenEncryptedResponseInt;
} }
public void setIdTokenEncryptedResponseInt( public void setIdTokenEncryptedResponseInt(JWEAlgorithmEntity idTokenEncryptedResponseInt) {
JweAlgorithms idTokenEncryptedResponseInt) {
this.idTokenEncryptedResponseInt = idTokenEncryptedResponseInt; this.idTokenEncryptedResponseInt = idTokenEncryptedResponseInt;
} }