Used to check for browser translation.
用于检测浏览器翻译。
ブラウザの翻訳を検出する

OAuth Server


简介#

Blocklet Service 可以作为 OAuth Server 服务,支持标准 OAuth 2.0 授权码模式(Authorization Code Grant),可用于为第三方应用(如 Grafana)提供统一的身份认证和授权服务。流程与 GitHub/Google OAuth 类似,兼容 OpenID Connect

支持功能:

  • OAuth 2.0 授权码授权流程(Authorization Code Grant)
  • OpenID Connect 基础用户信息获取
  • 可与 Grafana 等支持 Generic OAuth 的服务对接
  • 可定制的授权页面与 Scope 管理

 授权流程概览#

  • 用户在第三方应用选择 OAuth 登录
  • 应用将用户重定向到本地 OAuth Server 进行身份验证和授权
  • 用户同意授权后,OAuth Server 回调应用并携带授权码
  • 应用用授权码换取访问令牌(access token)
  • 应用用 access token 获取用户信息,完成登录

授权流程详解#

用户授权#

第三方应用会将用户重定向到如下 URL:

GET https://your-oauth-server/oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=YOUR_REDIRECT_URI
&scope=openid%20profile%20email
&state=RANDOM_STRING
&response_type=code

参数说明:

  • client_id:应用的 Client ID
  • redirect_uri:回调地址,需与注册时一致
  • scope:请求的权限范围
  • state:防 CSRF,建议随机生成
  • response_type:固定为 code

用户同意授权#

用户登录并同意授权后,OAuth Server 会重定向回 redirect_uri,并携带 code 和 state:

GET YOUR_REDIRECT_URI?code=AUTH_CODE&state=RANDOM_STRING

应用换取 Token#

用授权码换取 access token:

POST https://your-oauth-server/oauth/token
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&code=AUTH_CODE
&grant_type=authorization_code
&redirect_uri=YOUR_REDIRECT_URI

返回:

{
"access_token": "ACCESS_TOKEN",
"token_type": "bearer",
"expires_in": 3600,
"refresh_token": "REFRESH_TOKEN",
"scope": "openid profile email"
}

获取用户信息#

用 access token 获取用户信息:

GET https://your-oauth-server/oauth/userinfo
Authorization: Bearer ACCESS_TOKEN
{
"sub": "user_id",
"name": "用户名",
"email": "邮箱"
}
你获得 0 积分