统一账号认证登录 typecho 插件
序言
统一用户中心是一个集中管理用户身份信息、提供统一认证服务的系统。它通过整合不同应用系统的用户信息,实现单点登录、会话保持、单点退出等功能,从而节省了开发的周期。
[album type="photos"]
[/album]
支持性
- 支持密码登录
- 支持短信验证码登录
- 支持邮箱验证码登录
- 支持通行密钥PassKey登录
- 支持微信扫码登录
- 支持n个三方快捷登录 (具体支持需自己的探索)
- 支持密码登录2FA双因素安全认证
- 支持用户中心操作安全认证
使用方法
首先需要去 https://id.gumengya.com 注册一个账号
点击左侧导航栏 应用管理
创建一个应用
其中回调地址填写为 https://域名/id/callback
例如:https://blog.gumengya.com/id/callback
下载地址
[button color="primary" icon="" url="https://gitcode.com/gumengya/Typecho_GmSSO" type=""]GitCode[/button]
[button color="danger" icon="" url="https://gitee.com/isgm/Typecho_GmSSO" type=""]Gitee[/button]
然后 下载之后把插件丢到 plugins
目录 目录名改成 GmSSO
随后登录后台开启插件并配置插件信息
填写好Client ID 与 Client Secret 这个两个数据可在添加的应用看见复制粘贴进去保存即可
最后:
<?php echo GmSSO_Plugin::login(); //获取登录链接 ?>
以上代码可以输出一段授权的链接
可在网站任意地方写一个登录的按钮 奖用户引导到授权链接即可
[scode type="yellow" size=""]系统基于Oauth2开发开放应用,可以按照所需自己开发对接其它网站等系统[/scode]
OAuth 文档
[button color="danger" icon="" url="https://open-docs.gumengya.com/" type=""]ApiFox在线测试[/button]
1.认证接口
GET https://id.gumengya.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&state={state}
参数名 | 描述 | 类型 | 数据类型 |
---|---|---|---|
client_id | 注册的客户端 ID | query | string |
redirect_uri | 授权后回调的url | query | string |
state | 随机字符串,用于防止跨站点请求伪造攻击 | query | string |
2.重定向
如果用户接受你的授权,会重定向回您的网站,携带code参数以及你在上一步中在参数中提供的状态state。如果状态不匹配,则说明是第三方创建了请求,需要中止该过程。
GET {redirect_uri}?code={code}&state={state}
3.获取授权access_token
POST https://account.gumengya.com/api/oauth/access_token
参数名 | 描述 | 类型 | 数据类型 |
---|---|---|---|
code | 授权码 | post | string |
client_id | 注册的客户端 ID | post | string |
client_secret | 注册的客户端密钥 | post | string |
响应
{
"access_token": "access_token",,
"expires_in": 7776000,
"refresh_token": "refresh_token",,
}
4使用访问令牌访问用户信息API
POST https://account.gumengya.com/api/oauth/info
参数名 | 描述 | 类型 | 数据类型 |
---|---|---|---|
access_token | access_token | post | string |
5刷新access_token
POST https://account.gumengya.com/api/oauth/refresh_token
参数名 | 描述 | 类型 | 数据类型 |
---|---|---|---|
refresh_token | refresh_token | post | string |