diff --git a/core/src/main/java/com/usthe/sureness/processor/support/JwtProcessor.java b/core/src/main/java/com/usthe/sureness/processor/support/JwtProcessor.java index 82f07cc5e16dc4b935985d8eab9429dad24c8a0f..474d1503823f5eaebc1f24c994ea9838cb1bdddf 100644 --- a/core/src/main/java/com/usthe/sureness/processor/support/JwtProcessor.java +++ b/core/src/main/java/com/usthe/sureness/processor/support/JwtProcessor.java @@ -6,8 +6,10 @@ import com.usthe.sureness.processor.exception.IncorrectCredentialsException; import com.usthe.sureness.processor.exception.SurenessAuthenticationException; import com.usthe.sureness.processor.exception.SurenessAuthorizationException; import com.usthe.sureness.processor.exception.UnauthorizedException; +import com.usthe.sureness.subject.PrincipalMap; import com.usthe.sureness.subject.Subject; import com.usthe.sureness.subject.support.JwtSubject; +import com.usthe.sureness.subject.support.SinglePrincipalMap; import com.usthe.sureness.util.JsonWebTokenUtil; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; @@ -18,6 +20,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; +import java.util.Map; /** * the processor support jwt - JwtSubject @@ -69,6 +72,11 @@ public class JwtProcessor extends BaseProcessor { if (ownRoles != null) { builder.setOwnRoles(ownRoles); } + PrincipalMap principalMap = new SinglePrincipalMap(); + for (Map.Entry claimEntry : claims.entrySet()) { + principalMap.setPrincipal(claimEntry.getKey(), claimEntry.getValue()); + } + builder.setPrincipalMap(principalMap); return builder.build(); } diff --git a/core/src/main/java/com/usthe/sureness/subject/support/DigestSubject.java b/core/src/main/java/com/usthe/sureness/subject/support/DigestSubject.java index 6cfbb146d76cfd9e8f3b3feb95b29654b2c1d571..4bbc04fa13ffffb4e7b44065f4e79609827f1a4d 100644 --- a/core/src/main/java/com/usthe/sureness/subject/support/DigestSubject.java +++ b/core/src/main/java/com/usthe/sureness/subject/support/DigestSubject.java @@ -53,6 +53,9 @@ public class DigestSubject implements Subject { /** the Roles which can access this resource above-targetUri **/ private List supportRoles; + /** the map for principal, add your custom principal **/ + private PrincipalMap principalMap; + public DigestSubject() {} private DigestSubject(Builder builder) { @@ -69,6 +72,7 @@ public class DigestSubject implements Subject { this.ownRoles = builder.ownRoles; this.targetUri = builder.targetUri; this.supportRoles = builder.supportRoles; + this.principalMap = builder.principalMap; } @Override @@ -78,7 +82,7 @@ public class DigestSubject implements Subject { @Override public PrincipalMap getPrincipalMap() { - return null; + return principalMap; } @Override @@ -162,6 +166,7 @@ public class DigestSubject implements Subject { private List ownRoles; private String targetUri; private List supportRoles; + private PrincipalMap principalMap; public Builder(String username, String response) { this.appId = username; @@ -175,6 +180,7 @@ public class DigestSubject implements Subject { this.ownRoles = (List) subject.getOwnRoles(); this.targetUri = String.valueOf(subject.getTargetResource()); this.supportRoles = (List) subject.getSupportRoles(); + this.principalMap = subject.getPrincipalMap(); } public DigestSubject.Builder setAppId(String appId) { @@ -242,6 +248,11 @@ public class DigestSubject implements Subject { return this; } + public DigestSubject.Builder setPrincipalMap(PrincipalMap principalMap) { + this.principalMap = principalMap; + return this; + } + public DigestSubject build() { return new DigestSubject(this); } diff --git a/core/src/main/java/com/usthe/sureness/subject/support/JwtSubject.java b/core/src/main/java/com/usthe/sureness/subject/support/JwtSubject.java index bb494ae0c3f0d84b20599448ae98e241969dc181..82a0d839c0d25531735440abb7918df6b7440061 100644 --- a/core/src/main/java/com/usthe/sureness/subject/support/JwtSubject.java +++ b/core/src/main/java/com/usthe/sureness/subject/support/JwtSubject.java @@ -35,6 +35,9 @@ public class JwtSubject implements Subject { /** the Roles which can access this resource above-targetUri **/ private List supportRoles; + /** the map for principal, add your custom principal **/ + private PrincipalMap principalMap; + private JwtSubject(Builder builder) { this.appId = builder.appId; this.jwt = builder.jwt; @@ -43,6 +46,7 @@ public class JwtSubject implements Subject { this.ownRoles = builder.ownRoles; this.supportRoles = builder.supportRoles; this.targetUri = builder.targetUri; + this.principalMap = builder.principalMap; } @Override @@ -52,7 +56,7 @@ public class JwtSubject implements Subject { @Override public PrincipalMap getPrincipalMap() { - return null; + return this.principalMap; } @Override @@ -106,6 +110,7 @@ public class JwtSubject implements Subject { private List ownRoles; private String targetUri; private List supportRoles; + private PrincipalMap principalMap; public Builder(String jwt) { this.jwt = jwt; @@ -118,6 +123,7 @@ public class JwtSubject implements Subject { this.ownRoles = (List) subject.getOwnRoles(); this.targetUri = String.valueOf(subject.getTargetResource()); this.supportRoles = (List) subject.getSupportRoles(); + this.principalMap = subject.getPrincipalMap(); } public Builder setPrincipal(String appId) { @@ -125,6 +131,11 @@ public class JwtSubject implements Subject { return this; } + public Builder setPrincipalMap(PrincipalMap principalMap) { + this.principalMap = principalMap; + return this; + } + public Builder setCredentials(String jwt) { this.jwt = jwt; return this; diff --git a/core/src/main/java/com/usthe/sureness/subject/support/PasswordSubject.java b/core/src/main/java/com/usthe/sureness/subject/support/PasswordSubject.java index e10256228e78e1ba3ee7a625d3e126f7f614c139..e78fb471a1af4db073bd839a21cc9ac6f3b5c78e 100644 --- a/core/src/main/java/com/usthe/sureness/subject/support/PasswordSubject.java +++ b/core/src/main/java/com/usthe/sureness/subject/support/PasswordSubject.java @@ -32,6 +32,8 @@ public class PasswordSubject implements Subject { /** the Roles which can access this resource above-targetUri **/ private List supportRoles; + /** the map for principal, add your custom principal **/ + private PrincipalMap principalMap; private PasswordSubject(Builder builder) { this.appId = builder.appId; @@ -40,6 +42,7 @@ public class PasswordSubject implements Subject { this.ownRoles = builder.ownRoles; this.targetUri = builder.targetUri; this.supportRoles = builder.supportRoles; + this.principalMap = builder.principalMap; } @Override @@ -49,7 +52,7 @@ public class PasswordSubject implements Subject { @Override public PrincipalMap getPrincipalMap() { - return null; + return this.principalMap; } @Override @@ -94,6 +97,7 @@ public class PasswordSubject implements Subject { private List ownRoles; private String targetUri; private List supportRoles; + private PrincipalMap principalMap; public Builder(String appId, String password) { this.appId = appId; @@ -107,6 +111,7 @@ public class PasswordSubject implements Subject { this.ownRoles = (List) subject.getOwnRoles(); this.targetUri = String.valueOf(subject.getTargetResource()); this.supportRoles = (List) subject.getSupportRoles(); + this.principalMap = subject.getPrincipalMap(); } public Builder setPrincipal(String appId) { @@ -114,6 +119,11 @@ public class PasswordSubject implements Subject { return this; } + public Builder setPrincipalMap(PrincipalMap principalMap) { + this.principalMap = principalMap; + return this; + } + public Builder setCredentials(String password) { this.password = password; return this;