
无代码加密 无额外授权 版本号:1.0
适配PHP:56,74,81
OAuth2服务器插件 for Emlog
一个功能完整的OAuth2服务器插件,为您的Emlog网站提供OAuth2.0授权服务,支持其他应用使用您的网站账号进行单点登录。
功能特性
- ✅ 完整的OAuth2.0支持 - 符合RFC 6749标准
- ✅ 授权码流程 - 支持标准的authorization_code授权类型
- ✅ 刷新令牌 - 支持refresh_token延长访问权限
- ✅ PKCE安全扩展 - 支持代码挑战,提高安全性
- ✅ 用户信息端点 - 符合OpenID Connect标准
- ✅ 应用Logo支持 - 授权页面可显示第三方应用Logo
- ✅ 完整管理界面 - 方便的客户端应用管理
- ✅ 用户授权管理 - 用户可查看和撤销已授权的应用
- ✅ 安全防护 - State参数验证,防止CSRF攻击
OAuth2端点
启用插件后,您的网站将提供以下OAuth2端点:
- 授权端点:
https://yoursite.com/?plugin=oauth2_server&action=authorize
- 令牌端点:
https://yoursite.com/?plugin=oauth2_server&action=token
- 用户信息端点:
https://yoursite.com/?plugin=oauth2_server&action=userinfo
- 用户授权管理:
https://yoursite.com/?plugin=oauth2_server&action=user_auth
管理客户端应用
- 进入Emlog后台
- 访问插件管理页面
- 点击"OAuth2服务器"插件的设置
- 添加新的客户端应用:
- 应用名称:显示给用户的应用名称
- 回调地址:授权完成后的重定向URL
- 应用描述:向用户说明应用用途
- 应用Logo:可选,显示在授权页面的Logo URL
客户端集成示例
授权码流程
-
重定向到授权页面:
https://yoursite.com/?plugin=oauth2_server&action=authorize &response_type=code &client_id=YOUR_CLIENT_ID &redirect_uri=YOUR_CALLBACK_URL &scope=profile email &state=RANDOM_STATE
-
交换访问令牌:
curl -X POST https://yoursite.com/?plugin=oauth2_server&action=token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code" \ -d "code=AUTHORIZATION_CODE" \ -d "redirect_uri=YOUR_CALLBACK_URL" \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET"
-
获取用户信息:
curl -H "Authorization: Bearer ACCESS_TOKEN" \ https://yoursite.com/?plugin=oauth2_server&action=userinfo
支持的授权范围
profile
- 用户基本信息(昵称、头像等)email
- 用户邮箱地址
安全特性
- 客户端密钥验证 - 确保只有授权的应用可以获取令牌
- State参数验证 - 防止CSRF攻击
- 令牌过期机制 - 访问令牌和刷新令牌都有过期时间
- PKCE支持 - 代码挑战机制,提高移动应用安全性
- 授权码一次性使用 - 防止重放攻击
配置选项
在插件设置页面可以配置:
- 访问令牌有效期 - 默认3600秒(1小时)
- 刷新令牌有效期 - 默认1209600秒(14天)
- 授权码有效期 - 默认60秒
- 默认授权范围 - 默认为 "profile email"
技术规范
- 符合 OAuth 2.0 (RFC 6749) 标准
- 支持 OpenID Connect 用户信息端点
- 支持 PKCE (RFC 7636) 安全扩展
- 使用标准的 Bearer Token 认证