Skip to content

Commit f189da0

Browse files
feature : KnifeUserInfo, fix : DefaultResourceServerTokenIntrospector
1 parent 8d8bb41 commit f189da0

File tree

20 files changed

+178
-172
lines changed

20 files changed

+178
-172
lines changed

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/guard/AccessTokenUserInfo.java

-65
This file was deleted.

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/guard/AccessTokenUserInfoConverter.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard;
22

3+
import io.github.patternknife.securityhelper.oauth2.api.config.security.core.KnifeUserInfo;
34
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
45
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
56
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
@@ -13,13 +14,13 @@
1314

1415
public class AccessTokenUserInfoConverter {
1516

16-
public static AccessTokenUserInfo from(Object principal,
17-
ConditionalDetailsService conditionalDetailsService,
18-
OAuth2AuthorizationServiceImpl authorizationService, ISecurityUserExceptionMessageService iSecurityUserExceptionMessageService) {
17+
public static KnifeUserInfo<?> from(Object principal,
18+
ConditionalDetailsService conditionalDetailsService,
19+
OAuth2AuthorizationServiceImpl authorizationService, ISecurityUserExceptionMessageService iSecurityUserExceptionMessageService) {
1920

20-
AccessTokenUserInfo accessTokenUserInfo;
21-
if (principal instanceof AccessTokenUserInfo) {
22-
return ((AccessTokenUserInfo) principal);
21+
KnifeUserInfo<?> knifeUserInfo;
22+
if (principal instanceof KnifeUserInfo) {
23+
return ((KnifeUserInfo<?>) principal);
2324
} else if (principal instanceof OAuth2IntrospectionAuthenticatedPrincipal) {
2425
String userName = ((OAuth2IntrospectionAuthenticatedPrincipal) principal).getUsername();
2526
String clientId = ((OAuth2IntrospectionAuthenticatedPrincipal) principal).getClientId();
@@ -30,7 +31,7 @@ public static AccessTokenUserInfo from(Object principal,
3031
throw new KnifeOauth2AuthenticationException(iSecurityUserExceptionMessageService.getUserMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_LOGIN_FAILURE));
3132
}
3233

33-
return (AccessTokenUserInfo) conditionalDetailsService.loadUserByUsername(userName, clientId);
34+
return (KnifeUserInfo<?>) conditionalDetailsService.loadUserByUsername(userName, clientId);
3435
}else {
3536
throw new KnifeOauth2AuthenticationException(KnifeErrorMessages.builder().message("Wrong principal : " + principal.toString()).userMessage(DefaultSecurityUserExceptionMessage.AUTHENTICATION_TOKEN_ERROR.getMessage()).build());
3637
}
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
@Getter
1212
@Setter
13-
public class AdditionalAccessTokenUserInfo implements Serializable {
13+
public class CustomizedUserInfo implements Serializable {
1414

1515
public enum UserType {
1616
ADMIN("client_admin"),
@@ -35,7 +35,7 @@ public String getValue() {
3535

3636
private LocalDateTime deletedAt;
3737

38-
public AdditionalAccessTokenUserInfo(Customer customer) {
38+
public CustomizedUserInfo(Customer customer) {
3939

4040
this.userType = UserType.CUSTOMER;
4141

@@ -47,7 +47,7 @@ public AdditionalAccessTokenUserInfo(Customer customer) {
4747

4848
}
4949

50-
public AdditionalAccessTokenUserInfo(Admin admin) {
50+
public CustomizedUserInfo(Admin admin) {
5151

5252
this.userType = UserType.ADMIN;
5353

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/guard/UserCustomerOnlyImpl.java

+4-13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard;
22

3-
import com.patternknife.securityhelper.oauth2.client.config.response.error.exception.auth.CustomAuthGuardException;
4-
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
3+
import io.github.patternknife.securityhelper.oauth2.api.config.security.core.KnifeUserInfo;
54
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
6-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.KnifeErrorMessages;
7-
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.exception.KnifeOauth2AuthenticationException;
85
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.exception.KnifeOauth2AuthorizationException;
96
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.persistence.authorization.OAuth2AuthorizationServiceImpl;
107
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.userdetail.ConditionalDetailsService;
@@ -13,12 +10,6 @@
1310
import org.aspectj.lang.annotation.Around;
1411
import org.aspectj.lang.annotation.Aspect;
1512
import org.springframework.security.core.context.SecurityContextHolder;
16-
import org.springframework.security.core.userdetails.UserDetails;
17-
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
18-
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
19-
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken;
20-
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
21-
import org.springframework.security.oauth2.server.resource.introspection.OAuth2IntrospectionAuthenticatedPrincipal;
2213
import org.springframework.stereotype.Component;
2314

2415
@Aspect
@@ -34,11 +25,11 @@ public class UserCustomerOnlyImpl {
3425
public Object check(ProceedingJoinPoint joinPoint) throws Throwable {
3526

3627
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
37-
AccessTokenUserInfo accessTokenUserInfo = AccessTokenUserInfoConverter.from(principal, conditionalDetailsService, authorizationService, iSecurityUserExceptionMessageService);
28+
KnifeUserInfo<?> knifeUserInfo = AccessTokenUserInfoConverter.from(principal, conditionalDetailsService, authorizationService, iSecurityUserExceptionMessageService);
3829

39-
if(accessTokenUserInfo != null && (accessTokenUserInfo.getAdditionalAccessTokenUserInfo().getUserType() != AdditionalAccessTokenUserInfo.UserType.CUSTOMER)){
30+
if(knifeUserInfo != null && ((CustomizedUserInfo) knifeUserInfo.getCustomizedUserInfo()).getUserType() != CustomizedUserInfo.UserType.CUSTOMER){
4031
// Authorization
41-
throw new KnifeOauth2AuthorizationException("ID \"" + accessTokenUserInfo.getUsername() + "\" : Not in Customer Group");
32+
throw new KnifeOauth2AuthorizationException("ID \"" + knifeUserInfo.getUsername() + "\" : Not in Customer Group");
4233
}
4334

4435
return joinPoint.proceed();
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,37 @@
1717
* Set this to your resource servers
1818
* */
1919
@Component
20-
public class CustomDefaultResourceServerTokenIntrospector implements OpaqueTokenIntrospector {
20+
public class CustomResourceServerTokenIntrospector implements OpaqueTokenIntrospector {
2121

2222
private final OpaqueTokenIntrospector delegate;
2323

2424
/*
2525
* api : resource servers call the authorization server
2626
* database : the database is shared with the authorization server and resource servers
2727
* */
28-
@Value("${patternknife.securityhelper.oauth2.introspection.type}") String introspectionType;
29-
@Value("${patternknife.securityhelper.oauth2.introspection.uri}") String introspectionUri;
30-
@Value("${patternknife.securityhelper.oauth2.introspection.client-id}") String clientId;
31-
@Value("${patternknife.securityhelper.oauth2.introspection.client-secret}") String clientSecret;
32-
28+
String introspectionType;
3329

3430
private final OAuth2AuthorizationServiceImpl authorizationService;
3531
private final ConditionalDetailsService conditionalDetailsService;
3632
private final ISecurityUserExceptionMessageService iSecurityUserExceptionMessageService;
3733

3834

39-
public CustomDefaultResourceServerTokenIntrospector(
35+
public CustomResourceServerTokenIntrospector(
4036
OAuth2AuthorizationServiceImpl authorizationService,
4137
ConditionalDetailsService conditionalDetailsService,
4238
ISecurityUserExceptionMessageService iSecurityUserExceptionMessageService,
43-
@Value("${patternknife.securityhelper.oauth2.introspection.type}") String introspectionType,
44-
@Value("${patternknife.securityhelper.oauth2.introspection.uri}") String introspectionUri,
45-
@Value("${patternknife.securityhelper.oauth2.introspection.client-id}") String clientId,
46-
@Value("${patternknife.securityhelper.oauth2.introspection.client-secret}") String clientSecret) {
47-
this.delegate = new SpringOpaqueTokenIntrospector(introspectionUri, clientId, clientSecret);
39+
@Value("${patternknife.securityhelper.oauth2.introspection.type:database}") String introspectionType,
40+
@Value("${patternknife.securityhelper.oauth2.introspection.uri:default-introspect-uri}") String introspectionUri,
41+
@Value("${patternknife.securityhelper.oauth2.introspection.client-id:default-client-id}") String clientId,
42+
@Value("${patternknife.securityhelper.oauth2.introspection.client-secret:default-client-secret}") String clientSecret) {
43+
4844
this.authorizationService = authorizationService;
4945
this.conditionalDetailsService = conditionalDetailsService;
5046
this.iSecurityUserExceptionMessageService = iSecurityUserExceptionMessageService;
47+
48+
this.introspectionType = introspectionType;
49+
50+
this.delegate = new SpringOpaqueTokenIntrospector(introspectionUri, clientId, clientSecret);
5151
}
5252

5353
@Override

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/serivce/userdetail/AdminDetailsService.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.patternknife.securityhelper.oauth2.client.config.securityimpl.serivce.userdetail;
22

33

4-
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.AccessTokenUserInfo;
5-
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.AdditionalAccessTokenUserInfo;
4+
import io.github.patternknife.securityhelper.oauth2.api.config.security.core.KnifeUserInfo;
5+
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.CustomizedUserInfo;
66

77
import com.patternknife.securityhelper.oauth2.client.domain.admin.dao.AdminRepository;
88
import com.patternknife.securityhelper.oauth2.client.domain.admin.entity.Admin;
@@ -81,7 +81,7 @@ public Admin findByIdWithOrganizationRole(Long id) {
8181
}
8282

8383

84-
private AccessTokenUserInfo buildAdminForAuthentication(Admin admin, Collection<? extends GrantedAuthority> authorities) {
84+
private KnifeUserInfo<CustomizedUserInfo> buildAdminForAuthentication(Admin admin, Collection<? extends GrantedAuthority> authorities) {
8585

8686
String username = admin.getIdName();
8787
String password = admin.getPassword().getValue();
@@ -91,10 +91,10 @@ private AccessTokenUserInfo buildAdminForAuthentication(Admin admin, Collection<
9191
boolean credentialsNonExpired = true;
9292
boolean accountNonLocked = true;
9393

94-
AccessTokenUserInfo authUser = new AccessTokenUserInfo(username, password, enabled, accountNonExpired, credentialsNonExpired,
94+
KnifeUserInfo<CustomizedUserInfo> authUser = new KnifeUserInfo<>(username, password, enabled, accountNonExpired, credentialsNonExpired,
9595
accountNonLocked, authorities);
9696

97-
authUser.setAdditionalAccessTokenUserInfo(new AdditionalAccessTokenUserInfo(admin));
97+
authUser.setCustomizedUserInfo(new CustomizedUserInfo(admin));
9898

9999
return authUser;
100100
}
@@ -109,7 +109,6 @@ private Collection<? extends GrantedAuthority> getAuthorities(Long adminId) {
109109
return new ArrayList<GrantedAuthority>();
110110
}
111111

112-
113112
String[] adminRoles = admin.getAdminRoles().stream().map((adminRole) -> adminRole.getRole().getName()).toArray(String[]::new);
114113
Collection<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(adminRoles);
115114
return authorities;

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/serivce/userdetail/CustomUserDetailsServiceFactory.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.userdetail.UserDetailsServiceFactory;
5-
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.AdditionalAccessTokenUserInfo;
5+
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.CustomizedUserInfo;
66
import org.springframework.beans.factory.annotation.Autowired;
77
import org.springframework.security.core.userdetails.UserDetailsService;
88
import org.springframework.stereotype.Service;
@@ -21,9 +21,9 @@ public CustomUserDetailsServiceFactory(List<UserDetailsService> userDetailsServi
2121
userDetailsServiceMap = new HashMap<>();
2222
for (UserDetailsService userDetailsService : userDetailsServices) {
2323
if (userDetailsService instanceof AdminDetailsService) {
24-
userDetailsServiceMap.put(AdditionalAccessTokenUserInfo.UserType.ADMIN.getValue(), userDetailsService);
24+
userDetailsServiceMap.put(CustomizedUserInfo.UserType.ADMIN.getValue(), userDetailsService);
2525
} else if (userDetailsService instanceof CustomerDetailsService) {
26-
userDetailsServiceMap.put(AdditionalAccessTokenUserInfo.UserType.CUSTOMER.getValue(), userDetailsService);
26+
userDetailsServiceMap.put(CustomizedUserInfo.UserType.CUSTOMER.getValue(), userDetailsService);
2727
}
2828
}
2929
}

client/src/main/java/com/patternknife/securityhelper/oauth2/client/config/securityimpl/serivce/userdetail/CustomerDetailsService.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.patternknife.securityhelper.oauth2.client.config.securityimpl.serivce.userdetail;
22

33

4-
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.AccessTokenUserInfo;
5-
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.AdditionalAccessTokenUserInfo;
4+
import io.github.patternknife.securityhelper.oauth2.api.config.security.core.KnifeUserInfo;
5+
import com.patternknife.securityhelper.oauth2.client.config.securityimpl.guard.CustomizedUserInfo;
66
import com.patternknife.securityhelper.oauth2.client.config.response.error.exception.auth.UserDeletedException;
77

88
import com.patternknife.securityhelper.oauth2.client.domain.customer.dao.CustomerRepository;
@@ -12,7 +12,6 @@
1212
import com.patternknife.securityhelper.oauth2.client.domain.customer.entity.QCustomerRole;
1313
import com.patternknife.securityhelper.oauth2.client.domain.role.entity.QRole;
1414
import com.querydsl.jpa.impl.JPAQueryFactory;
15-
import io.github.patternknife.securityhelper.oauth2.api.config.security.dao.KnifeClientRepository;
1615
import jakarta.persistence.EntityManager;
1716
import jakarta.persistence.PersistenceContext;
1817
import org.springframework.beans.factory.annotation.Qualifier;
@@ -88,18 +87,18 @@ public Customer findByIdWithOrganizationRole(Long id) {
8887
}
8988

9089

91-
private AccessTokenUserInfo buildCustomerForAuthentication(Customer customer, Collection<? extends GrantedAuthority> authorities) {
90+
private KnifeUserInfo<CustomizedUserInfo> buildCustomerForAuthentication(Customer customer, Collection<? extends GrantedAuthority> authorities) {
9291
String customername = customer.getIdName();
9392
String password = customer.getPassword() != null ? customer.getPassword().getValue() : "";
9493
boolean enabled = true;
9594
boolean accountNonExpired = true;
9695
boolean credentialsNonExpired = true;
9796
boolean accountNonLocked = true;
9897

99-
AccessTokenUserInfo authCustomer = new AccessTokenUserInfo(customername, password, enabled, accountNonExpired, credentialsNonExpired,
98+
KnifeUserInfo<CustomizedUserInfo> authCustomer = new KnifeUserInfo<>(customername, password, enabled, accountNonExpired, credentialsNonExpired,
10099
accountNonLocked, authorities);
101100

102-
authCustomer.setAdditionalAccessTokenUserInfo(new AdditionalAccessTokenUserInfo(customer));
101+
authCustomer.setCustomizedUserInfo(new CustomizedUserInfo(customer));
103102

104103
return authCustomer;
105104
}

0 commit comments

Comments
 (0)