Skip to content

Commit

Permalink
fix: fix CasdoorUser serializable method to ObjectMapper & the entity…
Browse files Browse the repository at this point in the history
… annotation lose (#32)
  • Loading branch information
Zerek-Cheng authored Sep 8, 2022
1 parent 57b3199 commit c94a4e2
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

package org.casbin.casdoor.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand All @@ -38,5 +39,6 @@ public class CasdoorPermission implements Serializable {
private String[] resources;
private String[] actions;
private String effect;
@JsonProperty("isEnabled")
private boolean isEnabled;
}
2 changes: 2 additions & 0 deletions src/main/java/org/casbin/casdoor/entity/CasdoorRole.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

package org.casbin.casdoor.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand All @@ -33,5 +34,6 @@ public class CasdoorRole implements Serializable {
private String displayName;
private String[] users;
private String[] roles;
@JsonProperty("isEnabled")
private boolean isEnabled;
}
21 changes: 10 additions & 11 deletions src/main/java/org/casbin/casdoor/service/CasdoorAuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,14 @@

package org.casbin.casdoor.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.JWSVerifier;
import com.nimbusds.jose.Payload;
import com.nimbusds.jose.crypto.RSASSAVerifier;
import com.nimbusds.jwt.SignedJWT;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.oltu.oauth2.client.OAuthClient;
import org.apache.oltu.oauth2.client.URLConnectionClient;
import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
Expand All @@ -33,21 +36,21 @@

import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.interfaces.RSAPublicKey;
import java.text.ParseException;
import java.util.Map;

public class CasdoorAuthService {
private final CasdoorConfig casdoorConfig;
final private ObjectMapper objectMapper = new ObjectMapper();

public CasdoorAuthService(CasdoorConfig casdoorConfig){
public CasdoorAuthService(CasdoorConfig casdoorConfig) {
this.casdoorConfig = casdoorConfig;
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}

public String getOAuthToken(String code, String state) {
Expand All @@ -71,14 +74,11 @@ public String getOAuthToken(String code, String state) {
public CasdoorUser parseJwtToken(String token) {
// parse jwt token
SignedJWT parseJwt = null;
Map<String, Object> claims = null;
try {
parseJwt = SignedJWT.parse(token);
claims = parseJwt.getJWTClaimsSet().getClaims();
} catch (ParseException e) {
throw new CasdoorAuthException("Cannot parse jwt token.", e);
}

// verify the jwt public key
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Expand All @@ -95,10 +95,9 @@ public CasdoorUser parseJwtToken(String token) {

// convert to CasdoorUser
try {
CasdoorUser casdoorUser = new CasdoorUser();
BeanUtils.copyProperties(casdoorUser, claims);
return casdoorUser;
} catch (IllegalAccessException | InvocationTargetException e) {
Payload payloadJson = parseJwt.getPayload();
return objectMapper.readValue(payloadJson.toString(), CasdoorUser.class);
} catch (JsonProcessingException e) {
throw new CasdoorAuthException("Cannot convert claims to CasdoorUser", e);
}
}
Expand Down

0 comments on commit c94a4e2

Please sign in to comment.