NewLife.Cube OAuth服务端搭建教程微信、钉钉、GitHub等10第三方登录一次配齐【免费下载链接】NewLife.CubeWeb快速开发平台搭建管理后台灵活可扩展内部集成了用户权限管理、模板继承、SSO登录、OAuth服务端、数据导出与分享等多个功能模块在真实项目中经历过单表100亿数据添删改查的考验。项目地址: https://gitcode.com/gh_mirrors/ne/NewLife.CubeNewLife.Cube 是一款面向管理后台的 Web 快速开发平台内置完整的 OAuth 服务端与 SSO 单点登录能力既可以一键接入微信、钉钉、GitHub、QQ、企业微信等 10 第三方登录也能反过来把自己的系统包装成 OAuth 服务端为其他应用提供统一认证。本文带你从零开始用最少的代码把第三方登录和 OAuth 服务端一次配齐。一、先搞懂魔方扮演哪两个角色很多平台只能做其中一件事而 NewLife.Cube 把 OAuth 的客户端和服务端都做在了一个框架里角色说明典型场景 OAuth 客户端接入微信/钉钉/GitHub 等平台让用户用第三方账号登录你的系统公众号免登、钉钉免登、GitHub 登录开源后台️ OAuth 服务端你的系统签发授权码和令牌其他子系统靠它做单点登录多套业务系统共用一个登录中心也就是说接第三方登录是配一两张表的事变成登录中心是开几个接口的事全部在 NewLife.Cube/Controllers/SsoController.cs 中开箱即用无需自己实现授权码流程。二、三步启用微信、钉钉、GitHub 登录第 1 步克隆并运行魔方git clone https://gitcode.com/gh_mirrors/ne/NewLife.Cube打开解决方案运行 CubeDemo 项目首次启动会自动初始化数据库和用户。第 2 步打开 OAuth 配置页面登录后进入「系统管理 魔方设置 OAuth配置」。系统已预置好 QQ、GitHub、百度、钉钉、企业微信、微信公众号、微信开放平台、微软、新生命用户中心等常用渠道你只需补全密钥。上图即 OAuth 配置列表启用/可见/自动注册三列直接控制该渠道是否出现在登录页、新用户是否自动开户。第 3 步填入 AppId、Secret 与回调地址以三个最常见渠道为例微信在微信开放平台创建应用将 AppId、AppSecret 填入配置回调地址设为https://你的域名/Sso/LoginInfo/OpenWeixin扫码登录或/Sso/LoginInfo/Weixin公众号内静默登录钉钉填入企业应用的 AppId 与 SecretScope 可选snsapi_qrlogin扫码登录或snsapi_auth钉钉内免登GitHub创建 OAuth App 后填入 Client ID 与 Client Secret回调地址同样走/Sso/LoginInfo/Github。保存后勾选「启用」登录页立刻出现对应图标。每个渠道背后对应一个内置实现类如WeixinClient、DingTalkClient、GithubClient、QQClient等全部位于 NewLife.Cube/Web/OAuth/ 目录新增渠道无需写流程代码只配数据。三、11 个内置第三方登录渠道一览平台内置实现特色QQQQClientQQ 互联扫码微信公众号/开放平台/APP/小程序WeixinClient、OpenWeixinClient、WxAppClient、WxOpenClient静默登录、扫码、小程序 App 码登录全覆盖钉钉DingTalkClient支持免登企业内网利器企业微信QyWeiXin企业通讯录对接GitHubGithubClient开源项目常用微博 / 百度WeiboClient、BaiduClient传统社交登录支付宝 / 淘宝AlipayClient、TaobaoClient电商场景微软MicrosoftClientAzure AD 企业账号IdentityServer4Id4Client对接存量 SSO 中心另外还提供小程序/App 专用接口/Sso/WxMiniLogin与/Sso/WxAppLogin前端只需把wx.login()的 code 传过来即可完成登录。四、把魔方变成你的 OAuth 服务端如果你的公司有多套系统想共用一个登录中心魔方可以直接充当服务端。核心接口都在/Sso路由下完整说明见 Doc/OAUTH-OAuth与SSO.md接口作用/Sso/Authorize授权端点用户在此登录并同意授权返回授权码/Sso/Access_Token令牌端点子系统用授权码换取 Access Token/Sso/UserInfo用户信息端点用令牌获取当前用户/Sso/Auth2授权确认页/Sso/Logout单点登出子系统只需把授权地址指向你的魔方即可支持授权码、密码式、客户端凭证、刷新令牌等多种授权模式GrantTypes枚举定义见 NewLife.Cube/Entity/OAuth配置.Biz.cs。几点生产级细节新手也可以放心用授权码 1 分钟有效期且从正式发放起算过期后子系统会自动重新跳转授权用户几乎无感令牌有效期可配置TokenExpireMinutes刷新令牌支持 30 天级别续期每次授权、令牌交换都会写入OAuth 日志OAuthLog实体管理入口见 NewLife.Cube/Areas/Admin/Controllers/OAuthLogController.cs出问题可追溯。五、登录后用户怎么落地绑定策略详解第三方登录最终要落到系统本地用户上魔方提供了三种开箱即用的策略自动注册勾选「自动注册」后首次用第三方登录的用户会自动创建本地账号并写入头像配合「抓取头像」开关自动角色在「自动角色」中填写角色名多个用逗号隔开该渠道登录的用户自动获得对应权限非常适合给钉钉/企业微信渠道的用户预置一套最小权限手动绑定关闭自动注册后用户先本地密码登录再到个人中心的「账号绑定」中关联第三方账号管理入口为 NewLife.Cube/Areas/Admin/Controllers/UserConnectController.cs。配置实体本身也值得看一眼所有字段含义都写在注释里NewLife.Cube/Entity/OAuth配置.cs。六、常见问题FAQQ1登录页没出现某个第三方图标检查三项「启用」已勾选、「可见」已勾选、该租户下配置存在。微信公众号默认可见否因为它只用于应用内静默登录。Q2回调地址要写什么统一格式/Sso/LoginInfo/{渠道名}例如/Sso/LoginInfo/Ding。走反向代理时把外部域名填进配置的「应用地址」字段即可。Q3前后端分离部署要注意什么/Sso、/Auth等服务控制器不带/api前缀而实体/后台接口固定为/api/{area}/{controller}/{action}配置回调地址时别混淆。Q4多租户下第三方登录会串号吗不会。OAuth 配置带TenantId租户隔离浏览器跳转式与小程序 API 式登录都会按配置所属租户统一设置上下文租户互不可见。Q5想调试登录流程卡在哪一步把对应渠道的「调试」开关打开魔方会输出每一步的详细日志配合 OAuth 日志页面即可快速定位。小结NewLife.Cube 的 OAuth 能力可以概括为一句话第三方登录在后台填表就能开OAuth 服务端在接口层即插即用。配合用户绑定、自动角色、OAuth 日志与租户隔离从个人项目到多系统统一登录中心都能一份配置走天下。更多细节可参考官方文档 Doc/OAUTH-OAuth与SSO.md。【免费下载链接】NewLife.CubeWeb快速开发平台搭建管理后台灵活可扩展内部集成了用户权限管理、模板继承、SSO登录、OAuth服务端、数据导出与分享等多个功能模块在真实项目中经历过单表100亿数据添删改查的考验。项目地址: https://gitcode.com/gh_mirrors/ne/NewLife.Cube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考