From 66330025aa8de8d47a1ffe3197467f2d4cd21dc4 Mon Sep 17 00:00:00 2001 From: Ricky Padilla Date: Thu, 19 Sep 2024 14:56:17 -0600 Subject: [PATCH] feat(PSG-4773): removed conditional request style from credential registration --- .../interfaces/PassageCurrentUser.swift | 3 +-- .../PasskeyAuthorizationController.swift | 18 ++---------------- .../PasskeyCreationOptions.swift | 12 +----------- 3 files changed, 4 insertions(+), 29 deletions(-) diff --git a/Sources/Passage/interfaces/PassageCurrentUser.swift b/Sources/Passage/interfaces/PassageCurrentUser.swift index a2d94bd..3c44819 100644 --- a/Sources/Passage/interfaces/PassageCurrentUser.swift +++ b/Sources/Passage/interfaces/PassageCurrentUser.swift @@ -170,8 +170,7 @@ final public class PassageCurrentUser { let authController = PasskeyAuthenticationController() let credential = try await authController.requestPasskeyRegistration( registrationRequest: registrationRequest, - includeSecurityKeyOption: includeSecurityKeyOption, - autoUpgradeAccount: options?.isConditionalMediation == true + includeSecurityKeyOption: includeSecurityKeyOption ) // Send the new Credential Handshake Response to Passage server let finishRequest = RegisterWebAuthnFinishRequest( diff --git a/Sources/Passage/services/passkeyAuthentication/PasskeyAuthorizationController.swift b/Sources/Passage/services/passkeyAuthentication/PasskeyAuthorizationController.swift index 828d298..3cbc443 100644 --- a/Sources/Passage/services/passkeyAuthentication/PasskeyAuthorizationController.swift +++ b/Sources/Passage/services/passkeyAuthentication/PasskeyAuthorizationController.swift @@ -12,31 +12,17 @@ internal class PasskeyAuthenticationController: internal func requestPasskeyRegistration( registrationRequest: PasskeyRegistrationRequest, - includeSecurityKeyOption: Bool = false, - autoUpgradeAccount: Bool = false + includeSecurityKeyOption: Bool = false ) async throws -> ASAuthorizationPublicKeyCredentialRegistration { let publicKeyCredentialProvider = ASAuthorizationPlatformPublicKeyCredentialProvider( relyingPartyIdentifier: registrationRequest.relyingPartyIdentifier ) - var platformRegistrationRequest = publicKeyCredentialProvider + let platformRegistrationRequest = publicKeyCredentialProvider .createCredentialRegistrationRequest( challenge: registrationRequest.challenge, name: registrationRequest.userName, userID: registrationRequest.userId ) - #if os(iOS) || os(macOS) || os(visionOS) - if #available(iOS 18.0, macOS 15.0, visionOS 2.0, *) { - if autoUpgradeAccount { - platformRegistrationRequest = publicKeyCredentialProvider - .createCredentialRegistrationRequest( - challenge: registrationRequest.challenge, - name: registrationRequest.userName, - userID: registrationRequest.userId, - requestStyle: .conditional - ) - } - } - #endif // To match other webauthn "cross-platform" behaviors, we always include a Platform provider // request, never JUST a Security Key provider request. var requests: [ASAuthorizationRequest] = [ platformRegistrationRequest ] diff --git a/Sources/Passage/services/passkeyAuthentication/PasskeyCreationOptions.swift b/Sources/Passage/services/passkeyAuthentication/PasskeyCreationOptions.swift index a0e8939..ddba5e3 100644 --- a/Sources/Passage/services/passkeyAuthentication/PasskeyCreationOptions.swift +++ b/Sources/Passage/services/passkeyAuthentication/PasskeyCreationOptions.swift @@ -7,18 +7,8 @@ public struct PasskeyCreationOptions { /// Set to `.crossPlatform` to provide option for user to store credential on a physical Security Key. public let authenticatorAttachment: AuthenticatorAttachment? - /// Set to `true` to create a passkey without asking the user. - /// - /// NOTE: Only available on iOS 18.0+, macOS 15.0+, and visionOS 2.0+. - public let isConditionalMediation: Bool? - - public init(authenticatorAttachment: AuthenticatorAttachment?, isConditionalMediation: Bool?) { + public init(authenticatorAttachment: AuthenticatorAttachment?) { self.authenticatorAttachment = authenticatorAttachment - if #available(iOS 18.0, macOS 15.0, visionOS 2.0, *) { - self.isConditionalMediation = isConditionalMediation - } else { - self.isConditionalMediation = false - } } }