Skip to content

Commit b3afc1f

Browse files
authored
fix(Auth): Adding ASF DeviceId as an input for Cognito APIs (#2833)
* fix(Auth): Adding ASF DeviceId as an input for Cognito APIs * Added new unit tests for ConfirmSignUp Input * Updated ConfirmSignUp tests * Adding test for respondToAuthInputs
1 parent 5cd02f8 commit b3afc1f

File tree

13 files changed

+234
-5
lines changed

13 files changed

+234
-5
lines changed

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Actions/SignIn/DeviceSRPAuth/InitiateAuthDeviceSRP.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ struct InitiateAuthDeviceSRP: Action {
3333
for: username,
3434
with: environment)
3535

36+
let asfDeviceId = try await CognitoUserPoolASF.asfDeviceID(
37+
for: username,
38+
credentialStoreClient: environment.authEnvironment().credentialsClient)
39+
3640
let srpStateData = SRPStateData(
3741
username: username,
3842
password: "",
@@ -45,6 +49,7 @@ struct InitiateAuthDeviceSRP: Action {
4549
username: username,
4650
environment: userPoolEnv,
4751
deviceMetadata: deviceMetadata,
52+
asfDeviceId: asfDeviceId,
4853
session: authResponse.session,
4954
publicHexValue: srpKeyPair.publicKeyHexValue)
5055

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Actions/SignIn/DeviceSRPAuth/VerifyDevicePasswordSRP.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ struct VerifyDevicePasswordSRP: Action {
3333
let secretBlock = try secretBlock(secretBlockString)
3434
let serverPublicB = try serverPublic(parameters)
3535

36+
let asfDeviceId = try await CognitoUserPoolASF.asfDeviceID(
37+
for: username,
38+
credentialStoreClient: environment.authEnvironment().credentialsClient)
39+
3640
let deviceMetadata = await DeviceMetadataHelper.getDeviceMetadata(
3741
for: username,
3842
with: environment)
@@ -62,6 +66,7 @@ struct VerifyDevicePasswordSRP: Action {
6266
secretBlock: secretBlockString,
6367
signature: signature,
6468
deviceMetadata: deviceMetadata,
69+
asfDeviceId: asfDeviceId,
6570
environment: userPoolEnv)
6671

6772
let responseEvent = try await UserPoolSignInHelper.sendRespondToAuth(

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Actions/SignIn/SRPAuth/VerifyPasswordSRP.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ struct VerifyPasswordSRP: Action {
4141
let secretBlock = try secretBlock(secretBlockString)
4242
let serverPublicB = try serverPublic(parameters)
4343

44+
let asfDeviceId = try await CognitoUserPoolASF.asfDeviceID(
45+
for: username,
46+
credentialStoreClient: environment.authEnvironment().credentialsClient)
47+
4448
deviceMetadata = await DeviceMetadataHelper.getDeviceMetadata(
4549
for: username,
4650
with: environment)
@@ -57,6 +61,7 @@ struct VerifyPasswordSRP: Action {
5761
secretBlock: secretBlockString,
5862
signature: signature,
5963
deviceMetadata: deviceMetadata,
64+
asfDeviceId: asfDeviceId,
6065
environment: userPoolEnv)
6166
let responseEvent = try await UserPoolSignInHelper.sendRespondToAuth(
6267
request: request,

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Actions/SignIn/VerifySignInChallenge.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ struct VerifySignInChallenge: Action {
3131
let challengeType = challenge.challenge
3232
let responseKey = try challenge.getChallengeKey()
3333

34+
let asfDeviceId = try await CognitoUserPoolASF.asfDeviceID(
35+
for: username,
36+
credentialStoreClient: environment.authEnvironment().credentialsClient)
37+
3438
deviceMetadata = await DeviceMetadataHelper.getDeviceMetadata(
3539
for: username,
3640
with: environment)
@@ -42,6 +46,7 @@ struct VerifySignInChallenge: Action {
4246
responseKey: responseKey,
4347
answer: confirmSignEventData.answer,
4448
clientMetadata: confirmSignEventData.metadata,
49+
asfDeviceId: asfDeviceId,
4550
attributes: confirmSignEventData.attributes,
4651
deviceMetadata: deviceMetadata,
4752
environment: userpoolEnv)

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/Utils/ConfirmSignUpInput+Amplify.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ extension ConfirmSignUpInput {
1212
init(username: String,
1313
confirmationCode: String,
1414
clientMetadata: [String: String]?,
15-
asfDeviceId: String? = nil,
15+
asfDeviceId: String?,
1616
environment: UserPoolEnvironment
1717
) {
1818

@@ -38,6 +38,7 @@ extension ConfirmSignUpInput {
3838
clientMetadata: clientMetadata,
3939
confirmationCode: confirmationCode,
4040
secretHash: secretHash,
41-
userContextData: userContextData, username: username)
41+
userContextData: userContextData,
42+
username: username)
4243
}
4344
}

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/Utils/InitiateAuthInput+Amplify.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ extension InitiateAuthInput {
100100
authFlowType: CognitoIdentityProviderClientTypes.AuthFlowType,
101101
authParameters: [String: String],
102102
clientMetadata: [String: String],
103-
asfDeviceId: String? = nil,
103+
asfDeviceId: String?,
104104
deviceMetadata: DeviceMetadata,
105105
environment: UserPoolEnvironment) -> InitiateAuthInput {
106106

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/Utils/RespondToAuthChallengeInput+Amplify.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ extension RespondToAuthChallengeInput {
1616
secretBlock: String,
1717
signature: String,
1818
deviceMetadata: DeviceMetadata,
19+
asfDeviceId: String?,
1920
environment: UserPoolEnvironment) -> RespondToAuthChallengeInput {
2021
let dateStr = stateData.clientTimestamp.utcString
2122
let challengeResponses = [
@@ -29,13 +30,15 @@ extension RespondToAuthChallengeInput {
2930
challengeResponses: challengeResponses,
3031
session: session,
3132
clientMetadata: [:],
33+
asfDeviceId: asfDeviceId,
3234
deviceMetadata: deviceMetadata,
3335
environment: environment)
3436
}
3537

3638
static func deviceSRP(username: String,
3739
environment: UserPoolEnvironment,
3840
deviceMetadata: DeviceMetadata,
41+
asfDeviceId: String?,
3942
session: String?,
4043
publicHexValue: String) -> RespondToAuthChallengeInput {
4144
let challengeResponses = [
@@ -48,6 +51,7 @@ extension RespondToAuthChallengeInput {
4851
challengeResponses: challengeResponses,
4952
session: session,
5053
clientMetadata: [:],
54+
asfDeviceId: asfDeviceId,
5155
deviceMetadata: deviceMetadata,
5256
environment: environment)
5357
}
@@ -58,6 +62,7 @@ extension RespondToAuthChallengeInput {
5862
secretBlock: String,
5963
signature: String,
6064
deviceMetadata: DeviceMetadata,
65+
asfDeviceId: String?,
6166
environment: UserPoolEnvironment)
6267
-> RespondToAuthChallengeInput {
6368
let dateStr = stateData.clientTimestamp.utcString
@@ -72,6 +77,7 @@ extension RespondToAuthChallengeInput {
7277
challengeResponses: challengeResponses,
7378
session: session,
7479
clientMetadata: [:],
80+
asfDeviceId: asfDeviceId,
7581
deviceMetadata: deviceMetadata,
7682
environment: environment)
7783
}
@@ -83,6 +89,7 @@ extension RespondToAuthChallengeInput {
8389
responseKey: String,
8490
answer: String,
8591
clientMetadata: [String: String]?,
92+
asfDeviceId: String?,
8693
attributes: [String: String],
8794
deviceMetadata: DeviceMetadata,
8895
environment: UserPoolEnvironment) -> RespondToAuthChallengeInput {
@@ -102,6 +109,7 @@ extension RespondToAuthChallengeInput {
102109
challengeResponses: challengeResponses,
103110
session: session,
104111
clientMetadata: clientMetadata ?? [:],
112+
asfDeviceId: asfDeviceId,
105113
deviceMetadata: deviceMetadata,
106114
environment: environment)
107115
}
@@ -112,7 +120,7 @@ extension RespondToAuthChallengeInput {
112120
challengeResponses: [String: String],
113121
session: String?,
114122
clientMetadata: [String: String],
115-
asfDeviceId: String? = nil,
123+
asfDeviceId: String?,
116124
deviceMetadata: DeviceMetadata,
117125
environment: UserPoolEnvironment) -> RespondToAuthChallengeInput {
118126
var challengeResponses = challengeResponses

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/Utils/SignUpInput+Amplify.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ extension SignUpInput {
1818
clientMetadata: [String: String]?,
1919
validationData: [String: String]?,
2020
attributes: [String: String],
21-
asfDeviceId: String? = nil,
21+
asfDeviceId: String?,
2222
environment: UserPoolEnvironment) {
2323

2424
let configuration = environment.userPoolConfiguration
File renamed without changes.

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Task/AWSAuthConfirmSignUpTask.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,16 @@ class AWSAuthConfirmSignUpTask: AuthConfirmSignUpTask, DefaultLogger {
2828
try request.hasError()
2929
let userPoolEnvironment = authEnvironment.userPoolEnvironment
3030
do {
31+
32+
let asfDeviceId = try await CognitoUserPoolASF.asfDeviceID(
33+
for: request.username,
34+
credentialStoreClient: authEnvironment.credentialsClient)
3135
let metadata = (request.options.pluginOptions as? AWSAuthConfirmSignUpOptions)?.metadata
3236
let client = try userPoolEnvironment.cognitoUserPoolFactory()
3337
let input = ConfirmSignUpInput(username: request.username,
3438
confirmationCode: request.code,
3539
clientMetadata: metadata,
40+
asfDeviceId: asfDeviceId,
3641
environment: userPoolEnvironment)
3742
_ = try await client.confirmSignUp(input: input)
3843
log.verbose("Received success")

0 commit comments

Comments
 (0)