# ASP.NET8.0认证中心 **Repository Path**: CarsonMax/Net8.Identity ## Basic Information - **Project Name**: ASP.NET8.0认证中心 - **Description**: 基于OpenIddict框架搭建的自定义用户认证中心 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-04-07 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Net8.Identity - 基于 .NET 8 的身份认证与授权系统 这是一个基于 **ASP.NET Core** 和 **OpenIddict** 构建的完整身份认证与授权服务,实现了标准的 **OAuth 2.0** 和 **OpenID Connect** 协议。该项目为企业级应用提供统一的身份认证中心,支持多客户端集成和安全的令牌管理。 ![示例图|500×500](展示图.png) ## 🚀 项目概述 **Net8.Identity** 是一个现代化的身份认证解决方案,适用于: - **企业级身份认证中心** - 为多个应用提供统一登录服务 - **微服务架构** - 作为身份认证网关和授权服务 - **第三方应用集成** - 支持标准 OAuth 2.0 协议的应用接入 - **学习和研究** - 完整的 OpenID Connect 实现示例 ## 🏗️ 系统架构 项目采用多层架构设计,包含三个核心组件: ### 1. **Net8.Identity.Server** (身份认证服务器) **核心功能**:OAuth 2.0 和 OpenID Connect 协议实现 - 🔐 用户身份认证与授权 - 🎫 安全令牌颁发与管理 - 👤 用户信息服务 - 🛡️ 客户端权限控制 ### 2. **Net8.Identity.MvcClient** (桌面客户端) **功能**:演示桌面应用如何集成身份认证服务 - 🖥️ 桌面应用认证流程 - 🔄 令牌自动刷新 - 📱 用户友好的认证界面 ### 3. **Net8.Identity.WebClient** (Web API 客户端) **功能**:受保护的 Web API 资源服务 - 🌐 RESTful API 接口 - 🔒 基于令牌的访问控制 - 📊 资源权限验证 ## ✨ 核心特性 - **🔧 基于 .NET 8**:采用最新 .NET 8 框架,提供卓越性能和开发体验 - **🛡️ OpenIddict 集成**:完整实现 OAuth 2.0 和 OpenID Connect 标准协议 - **💾 Entity Framework Core**:使用 EF Core 进行数据持久化,支持多种数据库 - **🎨 现代化 UI**:基于 Razor Pages + Bootstrap 的响应式用户界面 - **🔐 安全保障**:密码哈希加密、HTTPS 支持、安全的会话管理 - **📱 多客户端支持**:支持 Web、桌面、移动等多种客户端类型 ## ⚡ 技术栈 | 技术领域 | 技术选型 | |---------|----------| | **后端框架** | ASP.NET Core (.NET 8) | | **身份认证** | OpenIddict (OAuth 2.0 + OpenID Connect) | | **数据访问** | Entity Framework Core | | **数据库** | SQLite (默认) / SQL Server / MySQL | | **前端框架** | Razor Pages + jQuery + Bootstrap | | **UI组件** | Axios (HTTP客户端) | | **安全** | 密码哈希、HTTPS、令牌加密 | ## 🚀 快速开始 ### 环境要求 - **.NET 8 SDK** 和运行时 - **SQLite** (或其他支持的数据库) - **Visual Studio** / **VS Code** (推荐) ### 安装步骤 1. **克隆项目** ```bash git clone [项目地址] cd Net8.Identity ``` 2. **数据库初始化** ```bash # 如果存在旧迁移,先移除 dotnet ef migrations Remove --project Net8.Identity.Server # 创建新的迁移 dotnet ef migrations add CreateUserModel --project Net8.Identity.Server # 更新数据库 dotnet ef database update --project Net8.Identity.Server ``` 3. **启动服务** **启动身份认证服务器**: ```bash dotnet run --project Net8.Identity.Server # 访问:https://localhost:5001 ``` **启动桌面客户端**: ```bash dotnet run --project Net8.Identity.MvcClient # 访问:https://localhost:7164 ``` **启动Web API客户端**: ```bash dotnet run --project Net8.Identity.WebClient # 访问:https://localhost:7002 ``` ### 测试账户 项目预置了测试账户: - **用户名**:`test1` / `test2` - **密码**:`123456` - **邮箱**:`wtlemon@126.com` > ⚠️ **安全提示**:生产环境请务必修改默认测试账户! ## 📋 主要功能 ### 🔐 身份认证流程 1. **用户登录** - 通过 `/Pages/Authenticate.cshtml` 进行身份验证 2. **授权请求** - 客户端通过 `/connect/authorize` 发起授权 3. **用户授权** - 用户确认授权范围 (`/Consent`) 4. **令牌颁发** - 通过 `/connect/token` 获取访问令牌 5. **资源访问** - 使用令牌访问受保护的资源 6. **用户信息** - 通过 `/connect/userinfo` 获取用户信息 7. **安全登出** - 通过 `/connect/logout` 清除会话 ### 🛠️ 核心组件 | 组件 | 功能描述 | |------|----------| | **AuthorizationController** | OAuth 授权流程控制器 | | **AuthorizationService** | 授权逻辑服务类 | | **ClientsSeeder** | 客户端和用户数据初始化 | | **ApplicationDbContext** | 数据库上下文和实体管理 | | **User Model** | 用户数据模型定义 | | **OpenIddictExtension** | OpenIddict 配置扩展 | | **PasswordHasher** | 密码加密工具类 | ## 📂 项目结构 ``` Net8.Identity/ ├── Net8.Identity.Server/ # 🏠 身份认证服务器 │ ├── Controllers/ # 授权控制器 │ │ └── AuthorizationController.cs │ ├── Models/ # 数据模型 │ │ └── User.cs │ ├── Pages/ # 认证页面 │ │ ├── Authenticate.cshtml │ │ ├── Consent.cshtml │ │ └── ... │ ├── Extensions/ # 扩展方法 │ │ ├── OpenIddictExtension.cs │ │ └── PasswordHasher.cs │ ├── Migrations/ # 数据库迁移 │ ├── wwwroot/ # 静态资源 │ ├── ApplicationDbContext.cs # 数据库上下文 │ ├── AuthorizationService.cs # 授权服务 │ ├── ClientsSeeder.cs # 数据初始化 │ ├── Consts.cs # 常量定义 │ └── Program.cs # 应用入口 ├── Net8.Identity.MvcClient/ # 🖥️ 桌面客户端 │ ├── Controllers/ │ ├── Extensions/ │ ├── Models/ │ └── ... ├── Net8.Identity.WebClient/ # 🌐 Web API 客户端 │ ├── Controllers/ │ ├── Extensions/ │ └── ... └── README.md # 📖 项目文档 ``` ## 🔧 配置说明 ### 数据库配置 ```json // appsettings.json { "ConnectionStrings": { "DbFilePath": "Dbfile/default.db" // SQLite数据库路径 } } ``` ### CORS 配置 项目默认配置了跨域访问,支持以下客户端: - `https://localhost:7164` (MvcClient) - `https://localhost:7002` (WebClient) ### 客户端注册 系统预置了以下OAuth客户端: - **oidc-debugger** - 用于调试和测试 - **web-client** - Web API 客户端 - **mvc** - MVC 客户端应用 ## 🛡️ 安全特性 - **🔐 密码安全**:使用 bcrypt 算法进行密码哈希 - **🎫 令牌安全**:JWT令牌签名和加密 - **🌐 HTTPS强制**:生产环境强制使用HTTPS - **🔒 会话管理**:安全的用户会话控制 - **🛡️ CORS保护**:严格的跨域访问控制 - **⚡ 令牌过期**:自动令牌过期和刷新机制 ## 🎯 使用场景 ### 企业应用 - **统一身份认证** - 为企业内部多个系统提供SSO - **权限管理中心** - 集中管理用户权限和角色 - **API网关** - 为微服务提供统一的身份验证 ### 第三方集成 - **OAuth 2.0 提供商** - 为第三方应用提供身份认证服务 - **OpenID Connect** - 标准协议集成 - **移动应用后端** - 为移动APP提供身份认证 ## 🤝 开发与贡献 ### 代码规范 - 遵循 **.NET 编码标准** - 使用 **async/await** 异步编程模式 - 完善的 **异常处理** 和日志记录 - **依赖注入** 最佳实践 ### 测试建议 - 编写 **单元测试** 覆盖核心业务逻辑 - 进行 **集成测试** 验证OAuth流程 - **安全测试** 确保认证流程安全性 ### 贡献指南 1. Fork 项目到个人仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 📚 相关资源 - [OpenIddict 官方文档](https://documentation.openiddict.com/) - [OAuth 2.0 RFC](https://tools.ietf.org/html/rfc6749) - [OpenID Connect 规范](https://openid.net/connect/) - [ASP.NET Core 身份认证](https://docs.microsoft.com/aspnet/core/security/) --- ## 📄 许可证 本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。 ## 🎉 致谢 感谢 [OpenIddict](https://github.com/openiddict/openiddict-core) 项目提供的强大身份认证框架支持! --- 如需更多帮助或有任何问题,欢迎提交 [Issue](https://gitee.com/vopipi/Net8.Identity/issues) 或联系项目维护者。