Skip to content

Commit ed38308

Browse files
fix : important bugs on App-Token areas
1 parent 7a2b568 commit ed38308

File tree

14 files changed

+84
-65
lines changed

14 files changed

+84
-65
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<dependency>
88
<groupId>io.github.patternknife.securityhelper.oauth2.api</groupId>
99
<artifactId>spring-security-oauth2-password-jpa-implementation</artifactId>
10-
<version>3.0.0</version>
10+
<version>3.0.1</version>
1111
</dependency>
1212
```
1313
For v2, using the database tables from Spring Security 5 (only the database tables; follow the dependencies as above):

client/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
77
<modelVersion>4.0.0</modelVersion>
88
<groupId>com.patternknife.securityhelper.oauth2.client</groupId>
99
<artifactId>spring-security-oauth2-password-jpa-implementation-client</artifactId>
10-
<version>3.0.0</version>
10+
<version>3.0.1</version>
1111
<packaging>jar</packaging>
1212

1313
<properties>
@@ -48,7 +48,7 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
4848
<dependency>
4949
<groupId>io.github.patternknife.securityhelper.oauth2.api</groupId>
5050
<artifactId>spring-security-oauth2-password-jpa-implementation</artifactId>
51-
<version>3.0.0</version>
51+
<version>3.0.1</version>
5252
</dependency>
5353

5454
<!-- DB -->

mysql/schema.sql

Lines changed: 12 additions & 10 deletions
Large diffs are not rendered by default.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
88

99
<groupId>io.github.patternknife.securityhelper.oauth2.api</groupId>
1010
<artifactId>spring-security-oauth2-password-jpa-implementation</artifactId>
11-
<version>3.0.0</version>
11+
<version>3.0.1</version>
1212
<name>spring-security-oauth2-password-jpa-implementation</name>
1313
<description>The implementation of Spring Security 6 Spring Authorization Server for stateful OAuth2 Password Grant</description>
1414
<packaging>jar</packaging>

src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/dao/KnifeAuthorizationRepository.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.data.jpa.repository.Modifying;
77
import org.springframework.data.jpa.repository.Query;
88
import org.springframework.data.repository.query.Param;
9+
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
910
import org.springframework.stereotype.Repository;
1011
import org.springframework.transaction.annotation.Transactional;
1112

@@ -90,6 +91,16 @@ public interface KnifeAuthorizationRepository extends JpaRepository<KnifeAuthori
9091

9192

9293
Optional<KnifeAuthorization> findByPrincipalNameAndRegisteredClientIdAndAccessTokenAppToken(String principalName, String registeredClientId, String accessTokenAppToken);
94+
95+
@Query("SELECT o FROM KnifeAuthorization o WHERE o.principalName = :principalName AND o.registeredClientId = :registeredClientId AND o.accessTokenAppToken = :accessTokenAppToken AND o.accessTokenExpiresAt > CURRENT_TIMESTAMP")
96+
Optional<KnifeAuthorization> findValidAuthorizationByPrincipalNameAndClientIdAndAppToken(
97+
@Param("principalName") String principalName,
98+
@Param("registeredClientId") String registeredClientId,
99+
@Param("accessTokenAppToken") String accessTokenAppToken
100+
);
101+
102+
103+
93104
Optional<List<KnifeAuthorization>> findListByPrincipalNameAndRegisteredClientIdAndAccessTokenAppToken(String principalName, String registeredClientId, String accessTokenAppToken);
94105
@Modifying
95106
@Transactional(rollbackFor=Exception.class)

src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/entity/KnifeAuthorization.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ public class KnifeAuthorization {
9090
private String refreshTokenValue;
9191

9292
@Column(name = "refresh_token_issued_at")
93-
private Instant refreshTokenIssuedAt;
93+
private LocalDateTime refreshTokenIssuedAt;
9494

9595
@Column(name = "refresh_token_expires_at")
96-
private Instant refreshTokenExpiresAt;
96+
private LocalDateTime refreshTokenExpiresAt;
9797

9898
@Lob
9999
@Column(name = "refresh_token_metadata")

src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/provider/auth/endpoint/KnifeOauth2AuthenticationProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import io.github.patternknife.securityhelper.oauth2.api.config.security.response.error.dto.ErrorMessages;
77
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.DefaultSecurityUserExceptionMessage;
88
import io.github.patternknife.securityhelper.oauth2.api.config.security.message.ISecurityUserExceptionMessageService;
9-
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.CommonOAuth2AuthorizationCycle;
9+
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.CommonOAuth2AuthorizationSaver;
1010
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.DefaultOauth2AuthenticationHashCheckService;
1111
import io.github.patternknife.securityhelper.oauth2.api.config.security.serivce.persistence.authorization.OAuth2AuthorizationServiceImpl;
1212
import io.github.patternknife.securityhelper.oauth2.api.config.security.token.CustomGrantAuthenticationToken;
@@ -31,7 +31,7 @@
3131
@AllArgsConstructor
3232
public final class KnifeOauth2AuthenticationProvider implements AuthenticationProvider {
3333

34-
private final CommonOAuth2AuthorizationCycle commonOAuth2AuthorizationCycle;
34+
private final CommonOAuth2AuthorizationSaver commonOAuth2AuthorizationCycle;
3535
private final ConditionalDetailsService conditionalDetailsService;
3636
private final DefaultOauth2AuthenticationHashCheckService oauth2AuthenticationHashCheckService;
3737
private final OAuth2AuthorizationServiceImpl oAuth2AuthorizationService;
@@ -67,7 +67,7 @@ public Authentication authenticate(Authentication authentication)
6767
}
6868

6969

70-
OAuth2Authorization oAuth2Authorization = commonOAuth2AuthorizationCycle.run(userDetails, ((CustomGrantAuthenticationToken) authentication).getGrantType(), clientId, ((CustomGrantAuthenticationToken) authentication).getAdditionalParameters(), null);
70+
OAuth2Authorization oAuth2Authorization = commonOAuth2AuthorizationCycle.save(userDetails, ((CustomGrantAuthenticationToken) authentication).getGrantType(), clientId, ((CustomGrantAuthenticationToken) authentication).getAdditionalParameters(), null);
7171

7272
RegisteredClient registeredClient = oAuth2ClientAuthenticationToken.getRegisteredClient();
7373

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
/*
1111
* Create = Build + Persist
1212
* */
13-
public interface CommonOAuth2AuthorizationCycle {
13+
public interface CommonOAuth2AuthorizationSaver {
1414

15-
OAuth2Authorization run(UserDetails userDetails, AuthorizationGrantType authorizationGrantType,
16-
String clientId, Map<String, Object> additionalParameters,
17-
@Nullable Map<String, Object> modifiableAdditionalParameters);
15+
OAuth2Authorization save(UserDetails userDetails, AuthorizationGrantType authorizationGrantType,
16+
String clientId, Map<String, Object> additionalParameters,
17+
@Nullable Map<String, Object> modifiableAdditionalParameters);
1818

1919
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@
2323

2424
@Service
2525
@RequiredArgsConstructor
26-
public class CommonOAuth2AuthorizationCycleImpl implements CommonOAuth2AuthorizationCycle {
26+
public class CommonOAuth2AuthorizationSaverImpl implements CommonOAuth2AuthorizationSaver {
2727

2828
private static final Logger logger = LoggerFactory.getLogger(KnifeSecurityLogConfig.class);
2929

3030
private final OAuth2AuthorizationBuildingService oAuth2AuthorizationBuildingService;
3131
private final OAuth2AuthorizationServiceImpl oAuth2AuthorizationService;
3232

3333
@Override
34-
public OAuth2Authorization run(UserDetails userDetails, AuthorizationGrantType authorizationGrantType, String clientId,
35-
Map<String, Object> additionalParameters, Map<String, Object> modifiableAdditionalParameters) {
34+
public OAuth2Authorization save(UserDetails userDetails, AuthorizationGrantType authorizationGrantType, String clientId,
35+
Map<String, Object> additionalParameters, Map<String, Object> modifiableAdditionalParameters) {
3636

3737
OAuth2Authorization oAuth2Authorization = oAuth2AuthorizationService.findByUserNameAndClientIdAndAppToken(userDetails.getUsername(), clientId, (String) additionalParameters.get(KnifeHttpHeaders.APP_TOKEN));
3838
if(authorizationGrantType.getValue().equals(AuthorizationGrantType.PASSWORD.getValue())){

src/main/java/io/github/patternknife/securityhelper/oauth2/api/config/security/serivce/authentication/OAuth2AuthorizationBuildingServiceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121

2222
import java.util.Map;
2323

24+
/*
25+
*
26+
* The term "build" means a "newly created OAuth2Authorization" (no update)
27+
*
28+
* */
2429
@Component
2530
@RequiredArgsConstructor
2631
public class OAuth2AuthorizationBuildingServiceImpl implements OAuth2AuthorizationBuildingService {

0 commit comments

Comments
 (0)