@@ -51,9 +51,25 @@ public extension SalesforceLoginViewController {
5151 class func loginWithFrontdoorBridgeUrl(
5252 _ frontdoorBridgeUrlString: String ,
5353 pkceCodeVerifier: String ?
54- ) {
54+ ) throws {
5555 guard let frontdoorBridgeUrl = URL ( string: frontdoorBridgeUrlString) else { return }
5656
57+ // Only allow use of front door bridge URLs with matching consumer keys.
58+ guard let frontdoorBridgeUrlComponents = NSURLComponents (
59+ url: frontdoorBridgeUrl,
60+ resolvingAgainstBaseURL: true ) ,
61+ let frontdoorBridgeUrlQueryItems = frontdoorBridgeUrlComponents. queryItems,
62+ let startUrlString = frontdoorBridgeUrlQueryItems. first ( where: { $0. name == " startURL " } ) ? . value,
63+ let startUrl = URL ( string: startUrlString) ,
64+ let startUrlComponents = NSURLComponents ( url: startUrl, resolvingAgainstBaseURL: true ) ,
65+ let startUrlQueryItems = startUrlComponents. queryItems,
66+ let frontdoorBridgeUrlClientId = startUrlQueryItems. first ( where: { $0. name == " client_id " } ) ? . value,
67+ frontdoorBridgeUrlClientId == SalesforceManager . shared. bootConfig? . remoteAccessConsumerKey
68+ else {
69+ let message = " Cannot use another app's login QR Code. Please log in to this app. "
70+ throw SfapError ( errorCode: " -1 " , message: message, messageCode: nil , source: nil )
71+ }
72+
5773 // Stop current authentication attempt, if applicable, before starting the new one.
5874 UserAccountManager . shared. stopCurrentAuthentication { result in
5975
@@ -84,12 +100,12 @@ public extension SalesforceLoginViewController {
84100 */
85101 class func loginWithFrontdoorBridgeUrlFromQrCode(
86102 _ qrCodeLoginUrl: String ?
87- ) -> Bool {
103+ ) throws -> Bool {
88104 if let uiBridgeApiParameters = uiBridgeApiParametersFromQrCodeLoginUrl (
89105 qrCodeLoginUrl
90106 ) {
91107 SFSDKAppFeatureMarkers . registerAppFeature ( sfSppFeatureQrCodeLogin)
92- loginWithFrontdoorBridgeUrl (
108+ try loginWithFrontdoorBridgeUrl (
93109 uiBridgeApiParameters. frontdoorBridgeUrl,
94110 pkceCodeVerifier: uiBridgeApiParameters. pkceCodeVerifier
95111 )
0 commit comments