ASP.NET Core and MongoDB (edit)

Cloud: AWS

Configuring the AWS SDK for .NET with .NET Core - AWS SDK for .NET (version 3) (amazon.com)

NuGet Packages:

+ AWSSDK.S3 (Amazon Simple Storage Service (Amazon S3), provides developers and IT teams with secure, durable, highly-scalable object storage.)

+ AWSSDK.Extensions.NETCore.Setup (Extensions for the AWS SDK for .NET to integrate with .NET Core configuration and dependency injection frameworks.)

AWSSDK.DynamoDBv2 (Amazon DynamoDB is a fast and flexible NoSQL database service for all applications that need consistent, single-digit millisecond latency at any scale.)

AWSSDK.CognitoIdentity (Amazon Cognito is a service that makes it easy to save user data, such as app preferences or game state, in the AWS Cloud without writing any backend code or managing any infrastructure. With Amazon Cognito, you can focus on creating great app experiences instead of having to worry about building and managing a backend solution to handle identity management, network state, storage, and sync.)

Amazon Cognito: User Identity Management

Successful web or mobile applications can reach millions of users, and it is critical that such applications have a robust and scalable approach for user and identity management.

Applications can have specific requirements, such as using their own identity store, or leveraging an existing identity provider such as Facebook, Google, or Amazon. Some need to use a combination of their own identity store with existing identity providers. This is often coupled with requirements for a user interface that handles user registration, login, user verification, and forgotten passwords.

Amazon Cognito enables you to add user sign-up, sign-in, and access control to your web and mobile apps quickly and easily. Amazon Cognito scales to millions of users and supports sign-in with social identity providers, including Facebook, Google, and Amazon, and enterprise identity providers via SAML 2.0.

Amazon Cognito can also be used to control access to REST APIS through integration with the Amazon API Gateway service, and can reduce the work to authenticate web application users by integrating with
the Application Load Balancer.

Security features include multi-factor authentication, checks for compromised credentials, account takeover protection, and phone and email verification. Amazon Cognito also supports application specific identity stores, user profiles, and customized workflows and user migration through Lambda triggers.

+ ASP.NET Core Identity for Amazon Cognito

Introducing the ASP.NET Core Identity Provider Preview for Amazon Cognito | AWS Developer Tools Blog

aws/aws-aspnet-cognito-identity-provider: ASP.NET Core Identity Provider for Amazon Cognito (github.com)

DB: MongoDB

MongoDB - How to backup and restore a database | Jason Watmore's Blog

Client: React JS Boilerplate

cornflourblue/react-signup-verification-boilerplate: React Boilerplate - Email Sign Up with Verification, Authentication & Forgot Password (github.com)

Framework: Open Source ASP.NET Core 5.0 Web API

vb-software/netcore-webapi-starter: .NET Core Web API Starter Template (github.com)

Article:

Build a Basic CRUD App with ASP.NET Core 3.0 and MongoDB | Okta Developer

Tag:

ASP.NET Core 3.1 - Role Based Authorization Tutorial with Example API | Jason Watmore's Blog

Idea:

c# - Simple token based authentication/authorization in asp.net core for Mongodb datastore - Stack Overflow

Authentication/Authorization:

Node + Mongo - Boilerplate API with Email Sign Up, Verification, Authentication & Forgot Password | Jason Watmore's Blog

  • Email sign up and verification
  • JWT authentication with refresh tokens
  • Role based authorization with support for two roles (User & Admin)
  • Forgot password and reset password functionality
  • Account management (CRUD) routes with role based access control
  • Swagger api documentation route

Node.js + MongoDB API - JWT Authentication with Refresh Tokens | Jason Watmore's Blog

ASP.NET Core 3.1 API - JWT Authentication with Refresh Tokens | Jason Watmore's Blog