Authentication server for Single Sign-On (SSO) using ASP.NET Core Identity and Identity Server
A starting point to build a central authentication server for single sign-on (SSO). The project is ready for real world applications using ASP.NET Core Identity for user membership management, and Identity Server for OpenID Connect and OAuth 2.0 implementation.
Features
- User membership management using ASP.NET Core Identity and SQL database
- OpenID Connect and OAuth 2.0 implementation using IdentityServer
- Configuration data storage (i.e., API resource, Identity resource, clients, etc.) in SQL database
- Persisted grants data storage (i.e. refresh token, digital signing keys, etc.) in SQL database
- Entity Framework Core support for database schema management using migrations (Code first approach)
- Support database auto-creation at application startup in development environment for fast up and running
- Support initial data-seeding at application startup in development environment for fast up and running
- Support API endpoints for user management hosted in the SSO application as local API endpoints
Getting Started
- Clone the repo
- Run the "SsoServer" project in Visual Studio or in command line
Additional Resources
I have published some short articles to cover different aspects of this project. Please feel free to give them a read.
- Single Sign-On (SSO) Simplified: Understanding How SSO Works in Plain English
- Build Your Own Authentication Server for Single Sign-On (SSO) in ASP.NET Core
- REST API Best Practices — Design Patterns for Building Maintainable Web APIs
- REST API Best Practices — Implement Design Patterns for User Management API Endpoints in Authentication Server
Give a star
⭐ If you enjoy this project, or are using this project to start your exciting new project, or are just forking it to play, please give it a star. Much appreciated! ⭐
License
This repo is for development purpose.
The IdentityServer library used in this project has its own license requirement. Please refer to Duende IdentityServer for additional license information.