LazyStack
LazyStackAuth is an independent library that you can use from a C# app to authenticate with an AWS Stack. There is no special or proprietary sauce here but the library does make some assumptions about the configuration of your AWS Cognito resources. If you are using LazyStack to generate these serverless.template files then that is all handled for you. You can certainly use LazyStackAuth with your own stack, review the serverless.template files generated by LazyStack to see how Cognito resources are configured for this library. The LazyStack tutorial is a comprehensive example of using LazyStackAuth and a LazyStack generated ClientSDK in a .NET app.
One or more IAuthProvider implementations implementing calls to the Cognito and/or other auth providers. The AuthProviderCognito class implements comprehensive sign-up, sign-in and user management features against the AWS Cognito UserPool authentication provider.
The AuthProcess class implements an INotifyPropertyChanged wrapper around the IAuthProvider interface to provide bindable properties and events suitable for use in an event driven UI.
The LzHttpClient class is a thin wrapper around the standard HttpClient class that knows how to select an appropriate ApiGateway call and then sign the HttpRequests to that AWS ApiGateway appropriately.
AuthProcess provides a state driven authentication machine implementing a iterative authentication challenge process. The properties and methods of the AuthProcess class are largely self-explanatory so we introduce the AuthProcess class by presenting the simplest happy-path use-cases;
The AuthProcess class implements numerous properties and events that make it very simple to build UI page(s) to support user authentication tasks. The LazyStack tutorial provides a Xamarin single page implementation that illustrates best practice use of AuthProcess in a MVVM architecture.