In order to authenticate your web app with [[AWS Cognito|Cognito]], you have a few options:
1. Implement your own UI and use the Cognito JavaScript SDK to make the requisite API calls. This is quite a lot of work as there are quite a lot of authentication edge cases you need to cater for.
2. Use the [Cognito Hosted UI](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-integration.html) so that you can redirect to a subdomain hosted by Cognito to perform user registration, login and other reset password.
3. Use the [[AWS Amplify]] client-side SDK's [prebuilt UI components](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#option-1-use-pre-built-ui-components) which contains login and register screens within the library (for React and Vue) but that you can deploy on the same domain as your app. You don't need to use the full Amplify CLI to use this feature, and can just manually configure the Amplify SDK to use an existing Cognito user pool (e.g. that you provision independently with [[Serverless Framework]] or another deployment framework)