Skip to content

Commit ed2200e

Browse files
authored
Merge pull request #102 from it-at-m/fix-altcha-payload
Use base Altcha payload for challenge verification
2 parents 4d4e8a0 + 04b0014 commit ed2200e

File tree

4 files changed

+17
-17
lines changed

4 files changed

+17
-17
lines changed

captchaservice-backend/src/main/java/de/muenchen/captchaservice/controller/captcha/request/PostVerifyRequest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package de.muenchen.captchaservice.controller.captcha.request;
22

3+
import de.muenchen.captchaservice.data.ExtendedPayload;
34
import de.muenchen.captchaservice.validation.ValidSourceAddress;
45
import jakarta.validation.constraints.NotBlank;
56
import jakarta.validation.constraints.NotNull;
67
import lombok.AllArgsConstructor;
78
import lombok.Data;
89
import lombok.NoArgsConstructor;
910

10-
import de.muenchen.captchaservice.data.ExtendedPayload;
11-
1211
@Data
1312
@NoArgsConstructor
1413
@AllArgsConstructor

captchaservice-backend/src/main/java/de/muenchen/captchaservice/data/ExtendedPayload.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,18 @@ public class ExtendedPayload extends Altcha.Payload {
1414
*/
1515
private Long took;
1616

17+
/**
18+
* Converts this {@code ExtendedPayload} instance into a plain {@link Altcha.Payload}
19+
* object that contains only the standard fields required for validation.
20+
*/
21+
public Altcha.Payload toBasePayload() {
22+
Altcha.Payload base = new Altcha.Payload();
23+
base.algorithm = this.algorithm;
24+
base.challenge = this.challenge;
25+
base.number = this.number;
26+
base.salt = this.salt;
27+
base.signature = this.signature;
28+
return base;
29+
}
30+
1731
}

captchaservice-backend/src/main/java/de/muenchen/captchaservice/service/captcha/CaptchaService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public boolean verify(final String siteKey, final ExtendedPayload payload, final
5757
return false;
5858
}
5959
try {
60-
final boolean isValid = Altcha.verifySolution(payload, captchaProperties.hmacKey(), true);
60+
Altcha.Payload base = payload.toBasePayload();
61+
final boolean isValid = Altcha.verifySolution(base, captchaProperties.hmacKey(), true);
6162
if (isValid) {
6263
metricsService.recordVerifySuccess(siteKey, sourceAddress);
6364

captchaservice-backend/src/test/java/de/muenchen/captchaservice/controller/captcha/CaptchaControllerTest.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import de.muenchen.captchaservice.TestConstants;
5-
import de.muenchen.captchaservice.configuration.captcha.CaptchaProperties;
65
import de.muenchen.captchaservice.controller.captcha.request.PostChallengeRequest;
76
import de.muenchen.captchaservice.controller.captcha.request.PostVerifyRequest;
87
import de.muenchen.captchaservice.data.ExtendedPayload;
98
import de.muenchen.captchaservice.repository.CaptchaRequestRepository;
10-
import de.muenchen.captchaservice.service.captcha.CaptchaService;
11-
import de.muenchen.captchaservice.service.expireddata.ExpiredDataService;
129
import de.muenchen.captchaservice.util.DatabaseTestUtil;
1310
import lombok.SneakyThrows;
1411
import org.altcha.altcha.Altcha;
@@ -29,8 +26,6 @@
2926
import org.testcontainers.junit.jupiter.Container;
3027
import org.testcontainers.utility.DockerImageName;
3128

32-
import java.time.Instant;
33-
3429
import static de.muenchen.captchaservice.TestConstants.SPRING_NO_SECURITY_PROFILE;
3530
import static de.muenchen.captchaservice.TestConstants.SPRING_TEST_PROFILE;
3631
import static org.hamcrest.Matchers.hasItem;
@@ -84,15 +79,6 @@ class CaptchaControllerTest {
8479
@Autowired
8580
private CaptchaRequestRepository captchaRequestRepository;
8681

87-
@Autowired
88-
private CaptchaProperties captchaProperties;
89-
90-
@Autowired
91-
private ExpiredDataService expiredDataService;
92-
93-
@Autowired
94-
private CaptchaService captchaService;
95-
9682
@Test
9783
void postChallenge_basic() {
9884
final Altcha.ChallengeOptions challengeOptions = new Altcha.ChallengeOptions();

0 commit comments

Comments
 (0)