From 65f30bdf7a98f5b2eef1ef2178bdf79065bb5a35 Mon Sep 17 00:00:00 2001 From: Nils Behlen Date: Fri, 29 Aug 2025 10:39:21 +0200 Subject: [PATCH 1/3] consider container type in PIResponse --- .../java/org/privacyidea/PIConstants.java | 3 ++- src/main/java/org/privacyidea/PIResponse.java | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/privacyidea/PIConstants.java b/src/main/java/org/privacyidea/PIConstants.java index 7cb0614..f88c082 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 fc6b8ee..e8de067 100644 --- a/src/main/java/org/privacyidea/PIResponse.java +++ b/src/main/java/org/privacyidea/PIResponse.java @@ -24,7 +24,9 @@ import java.util.function.Predicate; import java.util.stream.Collectors; -import static org.privacyidea.PIConstants.*; +import static org.privacyidea.PIConstants.CONTAINER_TYPE_SMARTPHONE; +import static org.privacyidea.PIConstants.TOKEN_TYPE_PUSH; +import static org.privacyidea.PIConstants.TOKEN_TYPE_WEBAUTHN; /** * This class parses the JSON response of privacyIDEA into a POJO for easier access. @@ -52,7 +54,6 @@ 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 username = ""; public String enrollmentLink = ""; @@ -79,7 +80,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); } /** @@ -89,14 +94,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; } @@ -107,7 +112,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; } @@ -122,7 +127,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) From 64b8e3e833f0bed5a15659e2b4fee78bc9806e1f Mon Sep 17 00:00:00 2001 From: lukasmatusiewicz Date: Wed, 17 Sep 2025 12:16:37 +0200 Subject: [PATCH 2/3] Update src/main/java/org/privacyidea/PIResponse.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/main/java/org/privacyidea/PIResponse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/privacyidea/PIResponse.java b/src/main/java/org/privacyidea/PIResponse.java index e8de067..d336106 100644 --- a/src/main/java/org/privacyidea/PIResponse.java +++ b/src/main/java/org/privacyidea/PIResponse.java @@ -24,9 +24,9 @@ import java.util.function.Predicate; import java.util.stream.Collectors; -import static org.privacyidea.PIConstants.CONTAINER_TYPE_SMARTPHONE; import static org.privacyidea.PIConstants.TOKEN_TYPE_PUSH; import static org.privacyidea.PIConstants.TOKEN_TYPE_WEBAUTHN; +import static org.privacyidea.PIConstants.CONTAINER_TYPE_SMARTPHONE; /** * This class parses the JSON response of privacyIDEA into a POJO for easier access. From ff6650bab86a44f0ba86594cb0ea676f1c1297e2 Mon Sep 17 00:00:00 2001 From: lukasmatusiewicz Date: Mon, 20 Oct 2025 12:44:09 +0200 Subject: [PATCH 3/3] Update PIResponse.java --- src/main/java/org/privacyidea/PIResponse.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/privacyidea/PIResponse.java b/src/main/java/org/privacyidea/PIResponse.java index 60b5f05..534ac74 100644 --- a/src/main/java/org/privacyidea/PIResponse.java +++ b/src/main/java/org/privacyidea/PIResponse.java @@ -55,6 +55,7 @@ public class PIResponse // Passkey content is json string and can be passed to the browser as is public String passkeyChallenge = ""; public String passkeyRegistration = ""; + public String passkeyMessage = ""; public String username = ""; public String enrollmentLink = ""; // Enroll via Multichallenge