提交 c51ac0cf 编写于 作者: “ChineseTony“

fix

......@@ -69,8 +69,7 @@ public class SurenessSecurityManager implements SecurityManager {
// Create a subject list to try auth one by one
List<Subject> subjectList = createSubject(request);
RuntimeException lastException = new UnsupportedSubjectException("this request can not " +
"create subject by creators,please config no subject creator by default");
RuntimeException lastException = UnsupportedSubjectException.getDefaultInstance();
// for the subject keys, try one by one
// if one success, pass and return directly
......
......@@ -11,4 +11,17 @@ public class UnsupportedSubjectException extends SurenessAuthenticationException
public UnsupportedSubjectException(String message) {
super(message);
}
/**
* single instance for UnsupportedSubjectException
* @return instance exception
*/
public static RuntimeException getDefaultInstance() {
return Instance.INSTANCE;
}
private static class Instance {
private static final RuntimeException INSTANCE = new UnsupportedSubjectException("this request can not " +
"create subject by creators,please config no subject creator by default");
}
}
......@@ -82,9 +82,9 @@ public class DigestProcessor extends BaseProcessor {
if (account.isExcessiveAttempts()) {
throw new ExcessiveAttemptsException("account is disable due to many time authenticated, try later");
}
return DigestSubject.builder(var)
.setOwnRoles(account.getOwnRoles())
.build();
// attention: need to set subject own roles from account
var.setOwnRoles(account.getOwnRoles());
return var;
}
private String getAuthenticate(){
......
......@@ -64,18 +64,18 @@ public class JwtProcessor extends BaseProcessor {
}
throw new ExpiredCredentialsException("this jwt has expired");
}
JwtSubject.Builder builder = JwtSubject.builder(var)
.setPrincipal(claims.getSubject());
// attention: need to set subject own roles from account
var.setPrincipal(claims.getSubject());
List<String> ownRoles = claims.get("roles", List.class);
if (ownRoles != null) {
builder.setOwnRoles(ownRoles);
var.setOwnRoles(ownRoles);
}
PrincipalMap principalMap = new SinglePrincipalMap();
for (Map.Entry<String, Object> claimEntry : claims.entrySet()) {
principalMap.setPrincipal(claimEntry.getKey(), claimEntry.getValue());
}
builder.setPrincipalMap(principalMap);
return builder.build();
var.setPrincipalMap(principalMap);
return var;
}
}
......@@ -46,7 +46,7 @@ public class PasswordProcessor extends BaseProcessor {
logger.debug("PasswordProcessor authenticated fail, no this user: {}",
var.getPrincipal());
}
throw new UnknownAccountException("do not exist the account: " + appId);
throw new UnknownAccountException("do not exist the account: " + appId);
}
if (var.getCredential() != null && account.getPassword() != null) {
String password = String.valueOf(var.getCredential());
......@@ -67,9 +67,9 @@ public class PasswordProcessor extends BaseProcessor {
if (account.isExcessiveAttempts()) {
throw new ExcessiveAttemptsException("account is disable due to many time authenticated, try later");
}
return PasswordSubject.builder(var)
.setOwnRoles(account.getOwnRoles())
.build();
// attention: need to set subject own roles from account
var.setOwnRoles(account.getOwnRoles());
return var;
}
public void setAccountProvider(SurenessAccountProvider provider) {
......
......@@ -20,6 +20,12 @@ public interface Subject extends Serializable {
*/
Object getPrincipal();
/**
* set account appId, eg:username
* @param var1 principal
*/
void setPrincipal(Object var1);
/**
* map for principals, key-value
* eg: id-idValue, customName-value, issuer-value
......@@ -27,6 +33,12 @@ public interface Subject extends Serializable {
*/
PrincipalMap getPrincipalMap();
/**
* set map for principals, key-value
* @param var1 principal map info
*/
void setPrincipalMap(PrincipalMap var1);
/**
* account credential, eg:password
*
......@@ -34,6 +46,12 @@ public interface Subject extends Serializable {
*/
Object getCredential();
/**
* set account credential, eg:password
* @param var1 credential
*/
void setCredential(Object var1);
/**
* get the roles owned by this account
*
......@@ -41,6 +59,12 @@ public interface Subject extends Serializable {
*/
Object getOwnRoles();
/**
* set the roles owned by this account
* @param var1 own roles
*/
void setOwnRoles(Object var1);
/**
* get the target resource uri which this account want access
*
......@@ -48,6 +72,12 @@ public interface Subject extends Serializable {
*/
Object getTargetResource();
/**
* set the target resource uri which this account want access
* @param var1 resource uri
*/
void setTargetResource(Object var1);
/**
* get the Roles which can access this resource above-targetUri
*
......
......@@ -80,26 +80,52 @@ public class DigestSubject implements Subject {
return appId;
}
@Override
public void setPrincipal(Object var1) {
this.appId = (String) var1;
}
@Override
public PrincipalMap getPrincipalMap() {
return principalMap;
}
@Override
public void setPrincipalMap(PrincipalMap var1) {
this.principalMap = var1;
}
@Override
public Object getCredential() {
return response;
}
@Override
public void setCredential(Object var1) {
this.response = (String) var1;
}
@Override
public Object getOwnRoles() {
return ownRoles;
}
@SuppressWarnings("unchecked")
@Override
public void setOwnRoles(Object var1) {
this.ownRoles = (List<String>) var1;
}
@Override
public Object getTargetResource() {
return targetUri;
}
@Override
public void setTargetResource(Object var1) {
this.targetUri = (String) var1;
}
@Override
public Object getSupportRoles() {
return supportRoles;
......
......@@ -54,26 +54,52 @@ public class JwtSubject implements Subject {
return this.appId;
}
@Override
public void setPrincipal(Object var1) {
this.appId = (String) var1;
}
@Override
public PrincipalMap getPrincipalMap() {
return this.principalMap;
}
@Override
public void setPrincipalMap(PrincipalMap var1) {
this.principalMap = var1;
}
@Override
public Object getCredential() {
return this.jwt;
}
@Override
public void setCredential(Object var1) {
this.jwt = (String) var1;
}
@Override
public Object getOwnRoles() {
return this.ownRoles;
}
@SuppressWarnings("unchecked")
@Override
public void setOwnRoles(Object var1) {
this.ownRoles = (List<String>) var1;
}
@Override
public Object getTargetResource() {
return this.targetUri;
}
@Override
public void setTargetResource(Object var1) {
this.targetUri = (String) var1;
}
@Override
public Object getSupportRoles() {
return this.supportRoles;
......
......@@ -38,26 +38,49 @@ public class NoneSubject implements Subject {
return null;
}
@Override
public void setPrincipal(Object var1) {
}
@Override
public PrincipalMap getPrincipalMap() {
return null;
}
@Override
public void setPrincipalMap(PrincipalMap var1) {
}
@Override
public Object getCredential() {
return null;
}
@Override
public void setCredential(Object var1) {
}
@Override
public Object getOwnRoles() {
return null;
}
@Override
public void setOwnRoles(Object var1) {}
@Override
public Object getTargetResource() {
return this.targetUri;
}
@Override
public void setTargetResource(Object var1) {
this.targetUri = (String) var1;
}
@Override
public Object getSupportRoles() {
return this.supportRoles;
......
......@@ -50,26 +50,52 @@ public class PasswordSubject implements Subject {
return this.appId;
}
@Override
public void setPrincipal(Object var1) {
this.appId = (String) var1;
}
@Override
public PrincipalMap getPrincipalMap() {
return this.principalMap;
}
@Override
public void setPrincipalMap(PrincipalMap var1) {
this.principalMap = var1;
}
@Override
public Object getCredential() {
return this.password;
}
@Override
public void setCredential(Object var1) {
this.password = (String) var1;
}
@Override
public Object getOwnRoles() {
return this.ownRoles;
}
@SuppressWarnings("unchecked")
@Override
public void setOwnRoles(Object var1) {
this.ownRoles = (List<String>) var1;
}
@Override
public Object getTargetResource() {
return this.targetUri;
}
@Override
public void setTargetResource(Object var1) {
this.targetUri = (String) var1;
}
@Override
public Object getSupportRoles() {
return supportRoles;
......
......@@ -47,26 +47,50 @@ public class SessionSubject implements Subject {
return this.principal;
}
@Override
public void setPrincipal(Object var1) {
this.principal = (String) var1;
}
@Override
public PrincipalMap getPrincipalMap() {
return this.principalMap;
}
@Override
public void setPrincipalMap(PrincipalMap var1) {
this.principalMap = var1;
}
@Override
public Object getCredential() {
return null;
}
@Override
public void setCredential(Object var1) {}
@Override
public Object getOwnRoles() {
return this.ownRoles;
}
@SuppressWarnings("unchecked")
@Override
public void setOwnRoles(Object var1) {
this.ownRoles = (List<String>) var1;
}
@Override
public Object getTargetResource() {
return this.targetUri;
}
@Override
public void setTargetResource(Object var1) {
this.targetUri = (String) var1;
}
@Override
public Object getSupportRoles() {
return this.supportRoles;
......
......@@ -49,9 +49,10 @@ public class CustomTokenProcessor extends BaseProcessor {
// auth passed
String appId = tokenArr[0];
SurenessAccount account = accountProvider.loadAccount(appId);
return CustomTokenSubject.builder(var)
.setPrincipal(appId)
.setOwnRoles(account.getOwnRoles()).build();
// attention: need to set subject own roles from account
var.setPrincipal(appId);
var.setOwnRoles(account.getOwnRoles());
return var;
} else {
// token expired or not exist, if token can refresh, refresh it
......
......@@ -50,26 +50,52 @@ public class CustomTokenSubject implements Subject {
return this.appId;
}
@Override
public void setPrincipal(Object var1) {
this.appId = (String) appId;
}
@Override
public PrincipalMap getPrincipalMap() {
return null;
}
@Override
public void setPrincipalMap(PrincipalMap var1) {
}
@Override
public Object getCredential() {
return this.token;
}
@Override
public void setCredential(Object var1) {
this.token = (String) token;
}
@Override
public Object getOwnRoles() {
return this.ownRoles;
}
@SuppressWarnings("unchecked")
@Override
public void setOwnRoles(Object var1) {
this.ownRoles = (List<String>) var1;
}
@Override
public Object getTargetResource() {
return this.targetUri;
}
@Override
public void setTargetResource(Object var1) {
this.targetUri = (String) targetUri;
}
@Override
public Object getSupportRoles() {
return this.supportRoles;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册