diff --git a/build.gradle b/build.gradle index 5686eb3..2fae23c 100644 --- a/build.gradle +++ b/build.gradle @@ -45,7 +45,7 @@ dependencies { implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' implementation 'com.google.code.findbugs:jsr305:3.0.2' implementation 'org.mapstruct:mapstruct:1.5.5.Final' - implementation files('libs/server-dto-1.5.0.jar') + implementation files('libs/server-dto-1.8.4.jar') compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' diff --git a/libs/server-dto-1.5.0.jar b/libs/server-dto-1.8.4.jar similarity index 63% rename from libs/server-dto-1.5.0.jar rename to libs/server-dto-1.8.4.jar index 70af392..25624ec 100644 Binary files a/libs/server-dto-1.5.0.jar and b/libs/server-dto-1.8.4.jar differ diff --git a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/authentication/AssertionOptionsServerRequestMapper.java b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/authentication/AssertionOptionsServerRequestMapper.java index cab2af2..211f213 100644 --- a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/authentication/AssertionOptionsServerRequestMapper.java +++ b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/authentication/AssertionOptionsServerRequestMapper.java @@ -25,10 +25,13 @@ @Mapper(componentModel = "spring") public interface AssertionOptionsServerRequestMapper { + @Mapping(target = "attestation", ignore = true) + @Mapping(target = "hints", ignore = true) @Mapping(target = "userId", source = "username") @Mapping(target = "timeout", constant = "300000L") AuthenticationOptionsServerRequestDto toWebauthnServerDto(AssertionOptionsServerRequest rpServer); + @Mapping(target = "attestation", ignore = true) @Mapping(target = "userId", source = "username") AuthenticationOptionsServerRequestDto toWebauthnServerDtoLv3(AssertionOptionsServerRequestLv3 rpServer); diff --git a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/registration/AttestationOptionsServerRequestMapper.java b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/registration/AttestationOptionsServerRequestMapper.java index a5958f6..bcc3f40 100644 --- a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/registration/AttestationOptionsServerRequestMapper.java +++ b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/mapper/registration/AttestationOptionsServerRequestMapper.java @@ -28,6 +28,7 @@ ServerAuthenticatorSelectionCriteriaMapper.class }) public interface AttestationOptionsServerRequestMapper { + @Mapping(target = "hints", ignore = true) @Mapping(target = "user", source = "rpServer") @Mapping(target = "excludeCredentials", constant = "true") @Mapping(target = "timeout", constant = "300000L") diff --git a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/ServerPublicKeyCredentialHints.java b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/ServerPublicKeyCredentialHints.java new file mode 100644 index 0000000..bc32980 --- /dev/null +++ b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/ServerPublicKeyCredentialHints.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2023 SK TELECOM CO., LTD. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.sktelecom.authentication.passkey.passkeyrpsample.model; + +import com.fasterxml.jackson.annotation.JsonValue; +import java.util.Collections; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum ServerPublicKeyCredentialHints { + SECURITY_KEY("security-key"), + CLIENT_DEVICE("client-device"), + HYBRID("hybrid"); + + @Getter + @JsonValue + private final String value; + + private static final Map MAP_BY_VALUE = + Collections.unmodifiableMap(Stream.of(values()) + .collect(Collectors.toMap(ServerPublicKeyCredentialHints::getValue, Function.identity()))); + + public static ServerPublicKeyCredentialHints find(String value) { + return Optional.ofNullable(MAP_BY_VALUE.get(value)).orElseThrow(NoSuchElementException::new); + } +} diff --git a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AssertionOptionsServerRequestLv3.java b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AssertionOptionsServerRequestLv3.java index 079e7e8..fb893f7 100644 --- a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AssertionOptionsServerRequestLv3.java +++ b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AssertionOptionsServerRequestLv3.java @@ -17,7 +17,9 @@ package com.sktelecom.authentication.passkey.passkeyrpsample.model.transport.lv3; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.sktelecom.authentication.passkey.passkeyrpsample.model.ServerPublicKeyCredentialHints; import com.sktelecom.authentication.passkey.passkeyrpsample.model.ServerUserVerificationRequirement; +import java.util.List; import lombok.Data; @Data @@ -25,5 +27,6 @@ public class AssertionOptionsServerRequestLv3 { private String username; private ServerUserVerificationRequirement userVerification; + private final List hints; Long timeout; } diff --git a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AttestationOptionsServerRequestLv3.java b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AttestationOptionsServerRequestLv3.java index 8f16441..debf900 100644 --- a/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AttestationOptionsServerRequestLv3.java +++ b/src/main/java/com/sktelecom/authentication/passkey/passkeyrpsample/model/transport/lv3/AttestationOptionsServerRequestLv3.java @@ -19,6 +19,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.sktelecom.authentication.passkey.passkeyrpsample.model.ServerAttestationConveyancePreference; import com.sktelecom.authentication.passkey.passkeyrpsample.model.ServerAuthenticatorSelectionCriteria; +import com.sktelecom.authentication.passkey.passkeyrpsample.model.ServerPublicKeyCredentialHints; +import java.util.List; import javax.validation.constraints.NotBlank; import lombok.Data; @@ -31,6 +33,7 @@ public class AttestationOptionsServerRequestLv3 { private String displayName; private ServerAuthenticatorSelectionCriteria authenticatorSelection; private ServerAttestationConveyancePreference attestation; + private List hints; Boolean excludeCredentials; Long timeout; }