Skip to content

Commit 35d2397

Browse files
wied03hjaretspwitt
authored
Merge feature/ENG-1111/mfa-lambda (#99)
* first lambda type * reduce client blast radius (#92) * Merge jaret/ENG-3601/configure-mfa-lambda (#93) * MFA lambda configuration * sb build consistency --------- Co-authored-by: Brady Wied <brady.wied@fusionauth.io> * ENG-3487: Tenant-scoped IdPs (#91) * update domain for tenantId on IdPs (#88) * add tenantId to IdP lookup by managed domain response (#90) * Merge wied03/ENG-3602/mfa-lambda-invocation (#94) * propagate client changes * client code update from Javadoc * Merge wied03/ENG-3603/mfa-retrieve-status-post (#95) * propagate client changes * client code update from Javadoc * client generation/new method * better method name * missing client stuff * redo client again * add IP address client overload (#98) * naming advice * mfa lambda * api fix * Change function name and parameters * PR feedback - lambda classses - new package and names * keep value as mfaTrust within lambda * pass raw JWT all the way in * Lambda signature - registration out of context, action and app in * Change context.encodedJWT to context.accessToken * rename token to accessToken on status API --------- Co-authored-by: Jaret Hendrickson <jaret.hendrickson+github@fusionauth.io> Co-authored-by: Spencer Witt <3409780+spwitt@users.noreply.github.com> Co-authored-by: Jaret Hendrickson <jaret.hendrickson@fusionauth.io>
1 parent acc3328 commit 35d2397

1 file changed

Lines changed: 183 additions & 5 deletions

File tree

openapi.yaml

Lines changed: 183 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,27 @@ components:
12981298
- ACTIVE
12991299
- PENDING
13001300
- REJECTED
1301+
Context:
1302+
description: Represents the inbound lambda parameter 'context' for MFA Required
1303+
lambdas.
1304+
type: object
1305+
properties:
1306+
accessToken:
1307+
type: string
1308+
action:
1309+
"$ref": "#/components/schemas/MultiFactorAction"
1310+
application:
1311+
"$ref": "#/components/schemas/Application"
1312+
authenticationThreats:
1313+
type: array
1314+
uniqueItems: true
1315+
items: {}
1316+
eventInfo:
1317+
"$ref": "#/components/schemas/EventInfo"
1318+
mfaTrust:
1319+
"$ref": "#/components/schemas/Trust"
1320+
policies:
1321+
"$ref": "#/components/schemas/Policies"
13011322
CoseAlgorithmIdentifier:
13021323
description: A number identifying a cryptographic algorithm. Values should be
13031324
registered with the <a href="https:www.iana.orgassignmentscosecose.xhtml#algorithms">IANA
@@ -4265,6 +4286,9 @@ components:
42654286
idTokenPopulateId:
42664287
type: string
42674288
format: uuid
4289+
multiFactorRequirementId:
4290+
type: string
4291+
format: uuid
42684292
samlv2PopulateId:
42694293
type: string
42704294
format: uuid
@@ -4359,6 +4383,7 @@ components:
43594383
- SelfServiceRegistrationValidation
43604384
- UserInfoPopulate
43614385
- LoginValidation
4386+
- MFARequirement
43624387
LinkedInApplicationConfiguration:
43634388
description: ''
43644389
type: object
@@ -4856,6 +4881,14 @@ components:
48564881
total:
48574882
type: integer
48584883
format: int64
4884+
MultiFactorAction:
4885+
description: Communicate various actionscontexts in which multi-factor authentication
4886+
can be used.
4887+
type: string
4888+
enum:
4889+
- changePassword
4890+
- login
4891+
- stepUp
48594892
MultiFactorAuthenticatorMethod:
48604893
type: object
48614894
properties:
@@ -5511,6 +5544,17 @@ components:
55115544
type: boolean
55125545
behavior:
55135546
"$ref": "#/components/schemas/UnverifiedBehavior"
5547+
Policies:
5548+
description: Represents the inbound lambda parameter 'policies' for MFA Required
5549+
lambdas.
5550+
type: object
5551+
properties:
5552+
applicationLoginPolicy:
5553+
"$ref": "#/components/schemas/MultiFactorLoginPolicy"
5554+
applicationMultiFactorTrustPolicy:
5555+
"$ref": "#/components/schemas/ApplicationMultiFactorTrustPolicy"
5556+
tenantLoginPolicy:
5557+
"$ref": "#/components/schemas/MultiFactorLoginPolicy"
55145558
PreviewMessageTemplateRequest:
55155559
description: ''
55165560
type: object
@@ -5775,6 +5819,8 @@ components:
57755819
type: string
57765820
licensed:
57775821
type: boolean
5822+
multiFactorLambdas:
5823+
"$ref": "#/components/schemas/ReactorFeatureStatus"
57785824
scimServer:
57795825
"$ref": "#/components/schemas/ReactorFeatureStatus"
57805826
tenantManagerApplication:
@@ -6045,6 +6091,15 @@ components:
60456091
type: boolean
60466092
enabled:
60476093
type: boolean
6094+
RequiredLambdaResult:
6095+
description: Represents the inbound lambda parameter 'result' for MFA Required
6096+
lambdas.
6097+
type: object
6098+
properties:
6099+
required:
6100+
type: boolean
6101+
sendSuspiciousLoginEvent:
6102+
type: boolean
60486103
RequiresCORSConfiguration:
60496104
description: Interface describing the need for CORS configuration.
60506105
type: object
@@ -6641,6 +6696,15 @@ components:
66416696
type: string
66426697
order:
66436698
"$ref": "#/components/schemas/Sort"
6699+
StartInstant:
6700+
type: object
6701+
properties:
6702+
applications:
6703+
type: object
6704+
additionalProperties:
6705+
"$ref": "#/components/schemas/ZonedDateTime"
6706+
tenant:
6707+
"$ref": "#/components/schemas/ZonedDateTime"
66446708
StatusResponse:
66456709
description: The public Status API response
66466710
type: object
@@ -7035,6 +7099,9 @@ components:
70357099
loginValidationId:
70367100
type: string
70377101
format: uuid
7102+
multiFactorRequirementId:
7103+
type: string
7104+
format: uuid
70387105
scimEnterpriseUserRequestConverterId:
70397106
type: string
70407107
format: uuid
@@ -7450,6 +7517,36 @@ components:
74507517
- SimpleMajority
74517518
- SuperMajority
74527519
- AbsoluteMajority
7520+
Trust:
7521+
description: Represents the inbound lambda parameter 'mfaTrust' inside the 'context'
7522+
parameter for MFA Required lambdas.
7523+
type: object
7524+
properties:
7525+
applicationId:
7526+
type: string
7527+
format: uuid
7528+
attributes:
7529+
type: object
7530+
additionalProperties:
7531+
type: string
7532+
expirationInstant:
7533+
"$ref": "#/components/schemas/ZonedDateTime"
7534+
id:
7535+
type: string
7536+
insertInstant:
7537+
"$ref": "#/components/schemas/ZonedDateTime"
7538+
startInstants:
7539+
"$ref": "#/components/schemas/StartInstant"
7540+
state:
7541+
type: object
7542+
additionalProperties:
7543+
type: object
7544+
tenantId:
7545+
type: string
7546+
format: uuid
7547+
userId:
7548+
type: string
7549+
format: uuid
74537550
TwilioMessengerConfiguration:
74547551
description: ''
74557552
type: object
@@ -7768,6 +7865,25 @@ components:
77687865
"$ref": "#/components/schemas/TwoFactorMethod"
77697866
twoFactorId:
77707867
type: string
7868+
TwoFactorStatusRequest:
7869+
description: Check the status of two-factor authentication for a user, with
7870+
more options than on a GET request.
7871+
type: object
7872+
properties:
7873+
userId:
7874+
type: string
7875+
format: uuid
7876+
accessToken:
7877+
type: string
7878+
action:
7879+
"$ref": "#/components/schemas/MultiFactorAction"
7880+
applicationId:
7881+
type: string
7882+
format: uuid
7883+
twoFactorTrustId:
7884+
type: string
7885+
eventInfo:
7886+
"$ref": "#/components/schemas/EventInfo"
77717887
TwoFactorStatusResponse:
77727888
description: ''
77737889
type: object
@@ -15638,6 +15754,32 @@ paths:
1563815754
application/json:
1563915755
schema:
1564015756
"$ref": "#/components/schemas/Errors"
15757+
"/api/two-factor/status":
15758+
post:
15759+
description: Retrieve a user's two-factor status. This can be used to see if
15760+
a user will need to complete a two-factor challenge to complete a login, and
15761+
optionally identify the state of the two-factor trust across various applications.
15762+
This operation provides more payload options than retrieveTwoFactorStatus.
15763+
operationId: retrieveTwoFactorStatusWithRequestWithId
15764+
parameters: []
15765+
requestBody:
15766+
content:
15767+
application/json:
15768+
schema:
15769+
"$ref": "#/components/schemas/TwoFactorStatusRequest"
15770+
responses:
15771+
'200':
15772+
description: Success
15773+
content:
15774+
application/json:
15775+
schema:
15776+
"$ref": "#/components/schemas/TwoFactorStatusResponse"
15777+
default:
15778+
description: Error
15779+
content:
15780+
application/json:
15781+
schema:
15782+
"$ref": "#/components/schemas/Errors"
1564115783
"/api/two-factor/status/{twoFactorTrustId}":
1564215784
get:
1564315785
description: Retrieve a user's two-factor status. This can be used to see if
@@ -16414,12 +16556,30 @@ paths:
1641416556
completing a Two-Factor Step-Up authentication. An HTTP status code of 400
1641516557
with a general error code of [TrustTokenRequired] indicates that a Trust Token
1641616558
is required to make a POST request to this API. OR Check to see if the user
16417-
must obtain a Trust Token Id in order to complete a change password request.
16559+
must obtain a Trust Request Id in order to complete a change password request.
1641816560
When a user has enabled Two-Factor authentication, before you are allowed
1641916561
to use the Change Password API to change your password, you must obtain a
16420-
Trust Token by completing a Two-Factor Step-Up authentication. An HTTP status
16421-
code of 400 with a general error code of [TrustTokenRequired] indicates that
16422-
a Trust Token is required to make a POST request to this API.
16562+
Trust Request Id by completing a Two-Factor Step-Up authentication. An HTTP
16563+
status code of 400 with a general error code of [TrustTokenRequired] indicates
16564+
that a Trust Token is required to make a POST request to this API. OR Check
16565+
to see if the user must obtain a Trust Request Id in order to complete a change
16566+
password request. When a user has enabled Two-Factor authentication, before
16567+
you are allowed to use the Change Password API to change your password, you
16568+
must obtain a Trust Request Id by completing a Two-Factor Step-Up authentication. An
16569+
HTTP status code of 400 with a general error code of [TrustTokenRequired]
16570+
indicates that a Trust Token is required to make a POST request to this API.
16571+
OR Check to see if the user must obtain a Trust Token Id in order to complete
16572+
a change password request. When a user has enabled Two-Factor authentication,
16573+
before you are allowed to use the Change Password API to change your password,
16574+
you must obtain a Trust Token by completing a Two-Factor Step-Up authentication. An
16575+
HTTP status code of 400 with a general error code of [TrustTokenRequired]
16576+
indicates that a Trust Token is required to make a POST request to this API.
16577+
OR Check to see if the user must obtain a Trust Token Id in order to complete
16578+
a change password request. When a user has enabled Two-Factor authentication,
16579+
before you are allowed to use the Change Password API to change your password,
16580+
you must obtain a Trust Token by completing a Two-Factor Step-Up authentication. An
16581+
HTTP status code of 400 with a general error code of [TrustTokenRequired]
16582+
indicates that a Trust Token is required to make a POST request to this API.
1642316583
operationId: retrieveUserChangePassword
1642416584
parameters:
1642516585
- name: loginId
@@ -16435,6 +16595,12 @@ paths:
1643516595
items:
1643616596
type: string
1643716597
description: The identity types that FusionAuth will compare the loginId to.
16598+
- name: ipAddress
16599+
in: query
16600+
schema:
16601+
type: string
16602+
description: IP address of the user changing their password. This is used
16603+
for MFA risk assessment.
1643816604
responses:
1643916605
'200':
1644016606
description: Success
@@ -16485,8 +16651,20 @@ paths:
1648516651
your password, you must obtain a Trust Token by completing a Two-Factor Step-Up
1648616652
authentication. An HTTP status code of 400 with a general error code of [TrustTokenRequired]
1648716653
indicates that a Trust Token is required to make a POST request to this API.
16488-
operationId: checkChangePasswordUsingIdWithId
16654+
OR Check to see if the user must obtain a Trust Token Id in order to complete
16655+
a change password request. When a user has enabled Two-Factor authentication,
16656+
before you are allowed to use the Change Password API to change your password,
16657+
you must obtain a Trust Token by completing a Two-Factor Step-Up authentication. An
16658+
HTTP status code of 400 with a general error code of [TrustTokenRequired]
16659+
indicates that a Trust Token is required to make a POST request to this API.
16660+
operationId: retrieveUserChangePasswordWithId
1648916661
parameters:
16662+
- name: ipAddress
16663+
in: query
16664+
schema:
16665+
type: string
16666+
description: IP address of the user changing their password. This is used
16667+
for MFA risk assessment.
1649016668
- name: changePasswordId
1649116669
in: path
1649216670
schema:

0 commit comments

Comments
 (0)