diff --git a/src/main/java/org/privacyidea/PIConstants.java b/src/main/java/org/privacyidea/PIConstants.java index 09dd7b6..12556bb 100644 --- a/src/main/java/org/privacyidea/PIConstants.java +++ b/src/main/java/org/privacyidea/PIConstants.java @@ -37,10 +37,11 @@ public class PIConstants public static final String HEADER_AUTHORIZATION = "Authorization"; public static final String HEADER_USER_AGENT = "User-Agent"; - // TOKEN TYPES + // TOKEN TYPES / CONTAINER public static final String TOKEN_TYPE_PUSH = "push"; public static final String TOKEN_TYPE_WEBAUTHN = "webauthn"; public static final String TOKEN_TYPE_PASSKEY = "passkey"; + public static final String CONTAINER_TYPE_SMARTPHONE = "smartphone"; // JSON KEYS public static final String USERNAME = "username"; diff --git a/src/main/java/org/privacyidea/PIResponse.java b/src/main/java/org/privacyidea/PIResponse.java index fd5895e..534ac74 100644 --- a/src/main/java/org/privacyidea/PIResponse.java +++ b/src/main/java/org/privacyidea/PIResponse.java @@ -25,6 +25,7 @@ import static org.privacyidea.PIConstants.TOKEN_TYPE_PUSH; import static org.privacyidea.PIConstants.TOKEN_TYPE_WEBAUTHN; +import static org.privacyidea.PIConstants.CONTAINER_TYPE_SMARTPHONE; /** @@ -53,8 +54,8 @@ public class PIResponse public PIError error = null; // Passkey content is json string and can be passed to the browser as is public String passkeyChallenge = ""; - public String passkeyMessage = ""; public String passkeyRegistration = ""; + public String passkeyMessage = ""; public String username = ""; public String enrollmentLink = ""; // Enroll via Multichallenge @@ -83,7 +84,11 @@ public boolean authenticationSuccessful() */ public boolean pushAvailable() { - return multiChallenge.stream().anyMatch(c -> TOKEN_TYPE_PUSH.equals(c.getType())); + return multiChallenge.stream().anyMatch(c -> isPushOrSmartphoneContainer(c.getType())); + } + + private boolean isPushOrSmartphoneContainer(String type) { + return TOKEN_TYPE_PUSH.equals(type) || CONTAINER_TYPE_SMARTPHONE.equals(type); } /** @@ -93,14 +98,14 @@ public boolean pushAvailable() */ public String pushMessage() { - return reduceChallengeMessagesWhere(c -> TOKEN_TYPE_PUSH.equals(c.getType())); + return reduceChallengeMessagesWhere(c -> isPushOrSmartphoneContainer(c.getType())); } public String otpTransactionId() { for (Challenge challenge : multiChallenge) { - if (!TOKEN_TYPE_PUSH.equals(challenge.getType()) && !TOKEN_TYPE_WEBAUTHN.equals(challenge.getType())) + if (!isPushOrSmartphoneContainer(challenge.getType()) && !TOKEN_TYPE_WEBAUTHN.equals(challenge.getType())) { return challenge.transactionID; } @@ -111,7 +116,7 @@ public String otpTransactionId() public String pushTransactionId() { for (Challenge challenge : multiChallenge) { - if (TOKEN_TYPE_PUSH.equals(challenge.getType())) + if (isPushOrSmartphoneContainer(challenge.getType())) { return challenge.transactionID; } @@ -126,7 +131,7 @@ public String pushTransactionId() { */ public String otpMessage() { - return reduceChallengeMessagesWhere(c -> !(TOKEN_TYPE_PUSH.equals(c.getType()))); + return reduceChallengeMessagesWhere(c -> !(isPushOrSmartphoneContainer(c.getType()))); } private String reduceChallengeMessagesWhere(Predicate predicate)