OAuth 2.0 · OpenID Connect
开放平台
其他域名上的应用可以通过授权码,使用这个品牌站的账号登录。每个品牌站是一套独立账号。
登录中心 https://jingweihub.com
开发者中心
我的应用
填写应用名称和 https 回调地址。有服务器的应用会得到只显示一次的 client_secret。
接入步骤
- 在本页登录后登记应用名称和 https 回调地址。保存 client_id。有自己服务器的应用同时保存只显示一次的 client_secret。
- 把用户的浏览器转到授权地址,带上 PKCE 的 code_challenge。
- 用户在品牌站用账号密码登录并同意后,浏览器回到你的回调地址,查询参数里有一次性 code 和你原来的 state。
- 你的服务器用 code、code_verifier 和 client_secret 换访问令牌、刷新令牌和 id_token。
- 在你自己的域名上建立会话。需要邮箱时带访问令牌读取用户信息。退出时撤销令牌。
端点
- 发现文档
https://jingweihub.com/.well-known/openid-configuration- 授权
GET https://jingweihub.com/api/public/oauth/authorize- 令牌
POST https://jingweihub.com/api/public/oauth/token- 用户信息
GET https://jingweihub.com/api/public/oauth/userinfo- 撤销
POST https://jingweihub.com/api/public/oauth/revoke- JWKS
GET https://jingweihub.com/api/public/oauth/jwks
授权参数
response_type=codeclient_idredirect_uri必须和登记的回调完全一致,并且是 httpsscope=openid emailopenid 必填,email 才会返回邮箱statenoncecode_challenge= BASE64URL(SHA256(code_verifier))code_challenge_method=S256
换令牌
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=...&redirect_uri=...&client_id=...&client_secret=...&code_verifier=...
公开应用不传 client_secret。刷新时使用 grant_type=refresh_token 和 refresh_token。id_token 使用 RS256,iss 是上面的登录中心,aud 是 client_id,sub 是这个品牌下的用户编号。
用户信息请求带 Authorization: Bearer 访问令牌。撤销请求同样用表单提交 token、client_id 和 client_secret。
