Amazon Cognito User Pool Integration with AuthPoint
Deployment Overview
This document describes how to set up multi-factor authentication (MFA) for the Amazon Cognito user pools with AuthPoint as an identity provider. Amazon Cognito must already be configured and deployed before you set up MFA with AuthPoint.
Amazon Cognito can be configured to support MFA in several modes. For this integration, we set up SAML with AuthPoint.
Contents
Amazon Cognito user pool Authentication Data Flow with AuthPoint
AuthPoint communicates with various cloud-based services and service providers with the SAML protocol. This diagram shows the data flow of an MFA transaction for Amazon Cognito user pools.
Before You Begin
Before you begin these procedures, make sure that:
- End-users can log in to Amazon AWS
- A token is assigned to a user in AuthPoint
- You have an AuthPoint identity provider (IdP) certificate (go to Certificate Management)
Configure Amazon Cognito
To start, you must download the metadata file from the Certificate Management page in the AuthPoint management UI. After you have that, you can configure the Amazon Cognito user pool.
- Log in to WatchGuard Cloud.
- From the navigation menu, select Configure > AuthPoint. If you have a Service Provider account, you must select an account from Account Manager.
- Select Resources.
- Click Certificate.
- Next to AuthPoint certificate you will associate with your resource, click
and select Download Metadata. We recommend that you choose the certificate with the latest expiration date.The AuthPoint metadata provides your resource, in this case Amazon Cognito, with information necessary to identify AuthPoint as a trusted identity provider.
- Log in to Amazon AWS as an administrator.
- Click Services.
- Select Security, Identity, & Compliance > Cognito.
- Click Create user pool.
- In the Provider types section, select the Federated identity providers check box.
- In the Cognito user pool sign-in options section, select the attributes used to sign in.
- In the Federated sign-in options section, select the SAML check box.
- Click Next.
- In the Multi-factor authentication section, for MFA methods, select the Authenticator apps check box. You can also select No MFA for MFA enforcement.
- Leave the default value for other settings.
- Click Next.
- Click Next.
- On the Configure Message Delivery page, for the Email provider, select Send email with Cognito.
- Click Next.
- In the Set up SAML federation with this user pool section, in the Provider name text box, type a friendly name. In our example, we type AuthPoint.
- (Optional) Select the Add sign-out flow check box.
- In the IdP-initiated SAML sign-in section, select Require SP-initiated SAML assertions - Recommended or Accept SP-initiated and IdP-initiated SAML assertions.
- In the Metadata document section, click Choose file and upload the AuthPoint metadata file that you downloaded in Step 5.
- In the Map attributes between your SAML provider and your user pool section, for the SAML attribute text box, type email.
- Click Next.
- In the User pool name text box, type a pool name.
- In the Cognito domain text box, type a domain prefix. Copy the Cognito domain value, you need this information when you configure AuthPoint in the next section.
- In the Initial app client section, for the App client name text box, type a client name.
- In the Client secret section, choose to generate or not generate a client secret depending on your app. In our example, we select Generate a client secret.
- In the Allowed callback URLs section, for the URL text box, type the callback URL.
- (Optional) Expand the Advanced app client settings, in the Allowed sign-out URLs section, click Add sign-out URL.
- (Optional) In the URL text box, type the sign-out URL.
- Leave the default values for other settings.
- Click Next.
- Click Create user pool.
- Click the user pool name you created.
- In the User pool overview section, copy the User pool ID value. You need this information when you configure AuthPoint in the next section.
- Select the Users tab.
- Click Create user and add your user information.
You must use the same information to create users on AuthPoint and your app.
- Click Create user.
- Select the App integration tab.
- In the App client list section, click the App client name you created.
- In the App client information section, copy the Client ID and Client secret values. You need these values when you configure AuthPoint in the next section.
- In the Hosted UI section, right-click and copy the View Hosted UI link address.
Configure AuthPoint
Before AuthPoint can receive authentication requests from the Amazon Cognito, you must add a SAML resource in AuthPoint. You must also create an authentication policy for the Amazon Cognito resource to determine which users can authenticate and log in to the AWS services and which authentication methods they can use (Push, QR code, and OTP).
Add a SAML Resource in AuthPoint
From the AuthPoint management UI:
- From the navigation menu, select Resources.
Click Add Resource.
The Add Resource page opens.
- From the Type drop-down list, select SAML.
Additional fields appear.
- On the SAML page, in the Name text box, type a name for this resource.
- From the Application Type drop-down list, select Others.
- In the Relay State text box, type identity_provider=IDProviderName&client_id=ClientId&redirect_uri=callbackURL&response_type=code&scope=email+openid+phone.
- Replace IDProviderName with the name you created in the previous section.
- Replace ClientId with the app client's Client ID from the previous section.
- Replace callbackURL with the callback URL you typed in the previous section.
- In the Service Provider Entity ID text box, type urn:amazon:cognito:sp:yourUserPoolID.
- In the Assertion Consumer Service text box, type https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse.
- In the Logout URL text box, type https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/logout.
- From the Signature Method drop-down list, select SHA-256.
- From the AuthPoint Certificate drop-down list, select the certificate to associate with your resource. This must be the same certificate that you downloaded the metadata for in the previous section.
- In the Custom Attributes section, click Add Attribute.
- In the Attribute Name text box, type email. This must be the same value you configured in the previous section.
- From the Get Value From drop-down list, select User email.
- Click Save.
- Click Save.
Add a Group in AuthPoint
You must have at least one user group in AuthPoint to configure MFA. If you already have a group, you do not have to add another group.
To add a WatchGuard Cloud-hosted group to the WatchGuard Cloud Directory:
- Go to Configure > Directories and Domain Services.
- Click the WatchGuard Cloud Directory domain name. If you have not yet added the WatchGuard Cloud Directory, click Add Authentication Domain and select the WatchGuard Cloud Directory.
The New Group page appears.
- In the Groups tab, click Add Group.
- In the Group Name text box, type a descriptive name for the group.
- (Optional) In the Description text box, type a description of the group.
- Click Save.
Your group is added to the WatchGuard Cloud Directory and to AuthPoint.
Add a Zero Trust Authentication Policy
Zero Trust policies specify which resources users can authenticate to and which authentication methods they can use (Push, QR code, and OTP).
You must have at least one Zero Trust authentication policy that includes the Amazon Cognito resource. If you already have Zero Trust authentication policies, you do not have to create a new authentication policy. You can add this resource to your existing authentication policies.
Users that do not have an authentication policy for a specific resource cannot authenticate to log in to that resource.
To configure a Zero Trust authentication policy:
- Go to Configure > Zero Trust. If you have a Service Provider account, you must select an account from Account Manager.
- Click Add Policy.
- Type a name for this policy.
- In the Target section, from the Content drop-down list, select which groups this policy applies to. You can make multiple selections to add multiple groups.
- In the Resources section, select the AuthPoint resources this policy applies to.
- In the Conditions section, select the conditions that apply to this policy. When you add a condition to an authentication policy, the policy applies only to user authentications that match the policy and the policy conditions. For example, if you add a Network Location to a policy, the policy only applies to user authentications that come from that Network Location. Users who only have a policy that includes a Network Location do not get access to the resource when they authenticate outside of that Network Location (because they do not have a policy that applies, not because authentication is denied). For more information, go to About Zero Trust Conditions.
- (Optional) To create a new condition, click Add New Condition. After you create a new condition, you must still add the condition to the policy.
- From the Type drop-down list, select the type of condition to add to the policy.
- From the Name drop-down list, select which condition of the chosen type to add to the policy.
- To add more conditions, repeat Step 6.
If you add conditions to a policy, we recommend that you create a second policy for the same groups and resources without the conditions. Assign a higher priority to the policy with the policy objects. For more information about priority, go to About Zero Trust Policy Precedence.
- In the Action section, select an option to specify whether to allow or deny authentications for the resources in this policy. In our example, we want to allow authentications.
- Allow — Allow user groups in this policy access to the resources associated with this policy.
- Deny — Deny authentications when users in the groups associated with this policy try to authenticate to the resources associated with this policy.
- If you allow access with this policy, select the check box for each authentication option users can select when they authenticate to resources in this policy with MFA.
For SAML resources, if you select more than one authentication option, users must select one of the available options when they authenticate. For example, if you select OTP and Push, users can choose to type their OTP or approve a push to authenticate. You cannot require that they do both.
- Click Save.
Your policy is created and added to the end of the policy list. - Review the order of your policies and adjust as necessary. For more information about priority, go to About Zero Trust Policy Precedence.
Add Users to AuthPoint
Before you assign users to a group, you must add the users to AuthPoint. There are two ways to add AuthPoint user accounts:
- Sync users from an external user database
- Add WatchGuard Cloud-hosted AuthPoint users
Each user must be a member of a group. You must add at least one group before you can add users to AuthPoint.
To import users from Active Directory, Microsoft Entra ID, or an LDAP database, you must add an external identity in the AuthPoint management UI. External identities connect to user databases to get user account information and validate passwords.
- To sync users from Active Directory or an LDAP database, you must add an LDAP external identity
- To sync users from Microsoft Entra ID, you must add a Microsoft Entra ID external identity
When you sync users from an external user database, you can sync any number of users and they are all added to AuthPoint at one time. Users synced from an external user database use the password defined for their user account as their AuthPoint password.
To learn how to sync users, go to Sync Users from Active Directory or LDAP and Sync Users from Azure Active Directory.
You create WatchGuard Cloud-hosted users and groups from the WatchGuard Cloud Directory in WatchGuard Cloud. Directories and Domain Services is where you add shared authentication domains for WatchGuard Cloud devices and services, such as AuthPoint.
Users that you add to the WatchGuard Cloud Directory are automatically added to AuthPoint as well.
You add local AuthPoint users form Directories and Domain Services. You manage the users in AuthPoint on the Users page.
When you add WatchGuard Cloud-hosted AuthPoint users, you choose whether the user is an MFA user or a non-MFA user.
- MFA users are user accounts that will use AuthPoint multi-factor authentication to authenticate. This is not related to the AuthPoint Multi-Factor Authentication license type.
- Non-MFA users are users that will only ever authenticate with a password, such as a service account user. Non-MFA users do not consume an AuthPoint user license and cannot authenticate to resources that require MFA. They can only authenticate to protected resources if the non-MFA user account has a password only authentication policy for that resource.
After you add a user, you can edit the user account if you need to change their account type. When you change a user account from MFA to non-MFA, AuthPoint deletes the tokens and password vault (if applicable) that belong to the user. This action cannot be undone.
Unlike users synced from an external user database, WatchGuard Cloud-hosted AuthPoint users define and manage their own AuthPoint password. When you add a WatchGuard Cloud-hosted user account, the user receives an email that prompts them to set their password.
To learn how to add WatchGuard Cloud-hosted AuthPoint user accounts to the WatchGuard Cloud Directory, go to Add Local Users to an Authentication Domain.
Test the Integration
To test AuthPoint MFA with the Amazon Cognito user pools, you can authenticate with a mobile token on your mobile device. For SAML resources, you can choose any method (push, QR code, or one-time password).
In this example, we show the push authentication method (users receive a push notification in the mobile app that they must approve to authenticate).
- In a web browser, go to your app client's View Hosted UI URL.
- Click the SAML provider name. In our example, the name is AuthPoint.
- Type your email address or AuthPoint user name. Click Next.
- If required, in the Password text box, type your password.
- For the authentication method, select Send Push.
- Approve the authentication request that is sent to your mobile device.
You are logged in to your app client's callback URL.