File tree 3 files changed +41
-5
lines changed
3 files changed +41
-5
lines changed Original file line number Diff line number Diff line change 1
1
Pod ::Spec . new do |s |
2
2
s . name = 'OktaAuthSdk'
3
- s . version = '2.4.4 '
3
+ s . version = '2.4.5 '
4
4
s . summary = 'SDK for Okta native authentication.'
5
5
s . description = <<-DESC
6
6
Integrate your native app with Okta.
Original file line number Diff line number Diff line change @@ -52,15 +52,30 @@ open class OktaAPI {
52
52
bodyParams [ " relayState " ] = relayState
53
53
bodyParams [ " options " ] = [ " multiOptionalFactorEnroll " : multiOptionalFactorEnroll,
54
54
" warnBeforePasswordExpired " : warnBeforePasswordExpired]
55
- var context : [ String : String ] = [ : ]
56
- context [ " deviceToken " ] = deviceToken
57
- bodyParams [ " context " ] = context
58
55
bodyParams [ " token " ] = token
59
56
req. bodyParams = bodyParams
57
+
58
+ var additionalHeaders = req. additionalHeaders ?? [ : ]
59
+ if let deviceToken = deviceToken {
60
+ var cookies = [ " DT= \( deviceToken) " ]
61
+ if let cookieHeader = req. additionalHeaders ? [ " Cookie " ] as? String {
62
+ cookies. append ( contentsOf: cookieHeader
63
+ . components ( separatedBy: " ; " )
64
+ . map ( { $0. trimmingCharacters ( in: . whitespaces) } ) )
65
+ }
66
+
67
+ additionalHeaders [ " Cookie " ] = cookies. joined ( separator: " ; " )
68
+ }
69
+
60
70
61
71
if let deviceFingerprint = deviceFingerprint {
62
- req . additionalHeaders = [ " X-Device-Fingerprint " : deviceFingerprint]
72
+ additionalHeaders [ " X-Device-Fingerprint " ] = deviceFingerprint
63
73
}
74
+
75
+ if !additionalHeaders. isEmpty {
76
+ req. additionalHeaders = additionalHeaders
77
+ }
78
+
64
79
req. run ( )
65
80
return req
66
81
}
Original file line number Diff line number Diff line change @@ -44,6 +44,27 @@ class OktaAPITests : XCTestCase {
44
44
wait ( for: [ exp] , timeout: 60.0 )
45
45
}
46
46
47
+ func testPrimaryAuthenticationWithDeviceToken( ) {
48
+ let username = " username "
49
+ let password = " password "
50
+ let deviceToken = " abcd123 "
51
+
52
+ let exp = XCTestExpectation ( )
53
+ api. commonCompletion = { req, _ in
54
+ XCTAssertEqual ( req. baseURL, self . url)
55
+ XCTAssertEqual ( req. path, " /api/v1/authn " )
56
+ XCTAssertEqual ( req. bodyParams ? [ " username " ] as? String , username)
57
+ XCTAssertEqual ( req. bodyParams ? [ " password " ] as? String , password)
58
+ XCTAssertNil ( req. bodyParams ? [ " context " ] )
59
+ XCTAssertEqual ( req. additionalHeaders ? [ " Cookie " ] , " DT= \( deviceToken) " )
60
+ exp. fulfill ( )
61
+ }
62
+
63
+ api. primaryAuthentication ( username: username, password: password, deviceToken: deviceToken)
64
+
65
+ wait ( for: [ exp] , timeout: 60.0 )
66
+ }
67
+
47
68
func testPrimaryAuthenticationWithDeviceFingerprint( ) {
48
69
let username = " username "
49
70
let password = " password "
You can’t perform that action at this time.
0 commit comments