What is our primary use case?
The usual use cases for Amazon Cognito that I have been working with mostly involve working for TLG Apps for three and a half years, where TLG Apps is a FinTech company in the UK. We were working for a few of the FinTech products, and inside that FinTech product, to make the authorization work, we handle how users will do the login, how to manage their identity, and how they can manage the logins and registration process. All those things are internally handled by Amazon Cognito. We use Amazon Cognito in multiple products inside TLG Apps.
I do use Amazon Cognito's custom authentication workflows, and we have worked a lot on that custom authentication, specifically using the multi-authentication system.
The custom authentication workflow's impact on my user management processes is significant, as I am working on a FinTech product that requires multi-level authentication. It does not just require a username and password, so in order to implement this, we had to include OTPs or one-time passwords sent to the user via mobile, email, and several other places as well. We can use an authenticator app as well, so we have multiple options available. We use this custom authentication flow to implement this feature specifically.
I never use the UI components directly of Amazon Cognito; rather, I work under the hood. We will not directly use their UI components, but will use their API, as the frontend is not going to use any UI at all, basically. Since it's a product, we will do the branding ourselves, and all those things. Amazon Cognito is directly linked to our backend service, you can say, so it is not exposed directly to the frontend.
The benefits I have experienced using Amazon Cognito's token-based authentication for OAuth 2.0, OpenID Connect, and SAML 2.0 protocols include my understanding that OAuth 2.0 is an open protocol widely used in all applications, and Amazon Cognito is the same as well. It has more compatibility in how we can implement it, as we have to do it in multiple places. If we need to build multiple applications based on a single Amazon Cognito instance, it is very good because we can create multiple apps on a single instance allowing one user to be shared across multiple applications, enabling single sign-on and so forth.
What is most valuable?
The features or capabilities of Amazon Cognito that I have found the most valuable so far include its seamless operation and the requirement of fewer integrations from the client side. All the features are there, enabling us to create the users, manage the groups, and manage access. Mostly, the access management is very good in Amazon Cognito, I would say.
The benefits and positive impacts that Amazon Cognito has had in my experience include the fact that earlier we needed to implement so many things on behalf of the product itself. Now, the go-to-market strategy requires less than a week to complete integrations of the user flow, specifically mentioning that a basic authentication flow could be completed in a week itself. We don't have to care about how we manage the passwords, how we manage groups, and how we manage access management because all those things are there. It's handy, the documentation is very good, and it is easy to integrate. That's the reason I would say that the impact AWS is building on the product is great.
What needs improvement?
I think Amazon Cognito provides less flexibility to customize at the moment. It is very tightly coupled with its own services, so it does not provide customization according to what the client needs. If a client has specific requirements, for example, needing two-way authentication from a different kind of authentication that they want to implement along with the username and password, those kinds of customizations are available but not that user-friendly, I would say.
For how long have I used the solution?
I have been working with Amazon Cognito for the last four years.
What do I think about the stability of the solution?
I would rate how stable and reliable Amazon Cognito is a nine, as it is very stable with no issues found until yet, indicating that its availability is at 99.9%.
What do I think about the scalability of the solution?
I would rate how scalable Amazon Cognito is a nine out of ten since it is scalable and on-demand. We don't have to think about how many users there are as it goes, so there are no limitations available.
How are customer service and support?
I do not often communicate with the technical support of Amazon Cognito, but initially, we had a couple of calls to understand how we can manage our custom authentication flow and all. Nothing apart from that, as initially we talked about our authentication flow and what would be the best way to implement Amazon Cognito for our use case.
Based on my experience with the technical support, I would rate them a nine.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
Before working with Amazon Cognito, I worked with several other tools for authentication, including my own authentication system in Bosch. I have worked for Bosch, where it had an internal tool for authentications, and it was not that much flexible compared to Amazon Cognito, I would say.
How was the initial setup?
I did participate in the initial setup and deployment of Amazon Cognito, where we needed to create an Amazon Cognito instance based on our use case, including the regions and all. We need to do some configurations such as how the image should be or how the message should be. Those are the message configurations we need to do, alongside determining what kind of authentication flow we need to implement and how many apps we need. We also need to configure the access token and refresh token validity. Overall, these are the major configurations I would say, including notifications we need to send and if we are going with custom authentication, which also requires us to implement the custom authentication with two or three lambdas that we need to add.
I find that the initial setup and deployment is straightforward, and there are not many challenges in setting up the AWS services.
What's my experience with pricing, setup cost, and licensing?
I am aware that the pricing of Amazon Cognito is not managed by me directly but is managed by some other teams, specifically the DevOps teams. As far as I know, it is based on how many users we have and how frequently we are doing the logins and all those things.
Which other solutions did I evaluate?
Before choosing Amazon Cognito, I did evaluate other options, along with one more vendor that I cannot remember. However, we were already using all our applications in AWS. We tried to go with Amazon Cognito to facilitate the integration of all other services.
What other advice do I have?
I think all the passwords are already encrypted, so on the security side, I would rate it a nine out of ten.
Overall, based on every aspect that I mentioned, I would rate Amazon Cognito an eight out of ten.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Amazon Web Services (AWS)