Skip to content

Commit 766d65b

Browse files
authored
Support sha passwords on import (#307)
+ test fixes descope/etc#14850
1 parent 05b38ac commit 766d65b

4 files changed

Lines changed: 52 additions & 1 deletion

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>com.descope</groupId>
66
<artifactId>java-sdk</artifactId>
77
<modelVersion>4.0.0</modelVersion>
8-
<version>1.0.62</version>
8+
<version>1.0.63</version>
99
<name>${project.groupId}:${project.artifactId}</name>
1010
<description>Java library used to integrate with Descope.</description>
1111
<url>https://github.com/descope/descope-java</url>

src/main/java/com/descope/model/user/request/BatchUserPasswordHashed.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ public class BatchUserPasswordHashed {
1818
BatchUserPasswordMd5 md5;
1919
BatchUserPasswordArgon2 argon2;
2020
BatchUserPasswordBuddyauth buddyauth;
21+
BatchUserPasswordSha sha;
2122
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.descope.model.user.request;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Data
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
public class BatchUserPasswordSha {
13+
String hash;
14+
String type;
15+
}

src/test/java/com/descope/sdk/mgmt/impl/UserServiceImplTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.descope.model.mgmt.ManagementServices;
3030
import com.descope.model.user.request.BatchUserPasswordHashed;
3131
import com.descope.model.user.request.BatchUserPasswordPbkdf2;
32+
import com.descope.model.user.request.BatchUserPasswordSha;
3233
import com.descope.model.user.request.BatchUserRequest;
3334
import com.descope.model.user.request.PatchUserRequest;
3435
import com.descope.model.user.request.RolesList;
@@ -54,6 +55,7 @@
5455
import com.descope.sdk.mgmt.RolesService;
5556
import com.descope.sdk.mgmt.TenantService;
5657
import com.descope.sdk.mgmt.UserService;
58+
import java.security.MessageDigest;
5759
import java.security.SecureRandom;
5860
import java.security.spec.KeySpec;
5961
import java.time.Duration;
@@ -1162,6 +1164,39 @@ void testFunctionalBatch() throws Exception {
11621164
userService.delete(loginId);
11631165
}
11641166

1167+
@RetryingTest(value = 3, suspendForMs = 30000, onExceptions = RateLimitExceededException.class)
1168+
void testFunctionalBatchWithShaPassword() throws Exception {
1169+
String loginId = TestUtils.getRandomName("u-");
1170+
String email = TestUtils.getRandomName("test-") + "@descope.com";
1171+
String phone = "+1-555-555-5555";
1172+
String name = "Sha User";
1173+
String password = "This is a sha test";
1174+
1175+
MessageDigest digest = MessageDigest.getInstance("SHA-256");
1176+
byte[] hashBytes = digest.digest(password.getBytes("UTF-8"));
1177+
StringBuilder hexHash = new StringBuilder();
1178+
for (byte b : hashBytes) {
1179+
hexHash.append(String.format("%02x", b));
1180+
}
1181+
1182+
UsersBatchResponse res = userService.createBatch(Arrays.asList(BatchUserRequest.builder().loginId(loginId)
1183+
.email(email).verifiedEmail(true).phone(phone).verifiedPhone(true).displayName(name)
1184+
.hashedPassword(BatchUserPasswordHashed.builder()
1185+
.sha(BatchUserPasswordSha.builder().type("sha256").hash(hexHash.toString()).build())
1186+
.build())
1187+
.build()));
1188+
assertNotNull(res);
1189+
assertNotNull(res.getCreatedUsers());
1190+
assertEquals(1, res.getCreatedUsers().size());
1191+
assertTrue(res.getFailedUsers() == null || res.getFailedUsers().isEmpty());
1192+
AuthenticationInfo authInfo = passwordService.signIn(loginId, password);
1193+
assertNotNull(authInfo);
1194+
assertNotNull(authInfo.getUser());
1195+
assertEquals(email, authInfo.getUser().getEmail());
1196+
assertEquals(name, authInfo.getUser().getName());
1197+
userService.delete(loginId);
1198+
}
1199+
11651200
@RetryingTest(value = 3, suspendForMs = 30000, onExceptions = RateLimitExceededException.class)
11661201
void testFunctionalSetActivePassword() {
11671202
String loginId = TestUtils.getRandomName("u-");

0 commit comments

Comments
 (0)