OAuth2.0 / OpenID Connect 教学演示项目,用 Go 实现授权码许可、隐式许可、资源拥有者凭据许可、客户端凭据许可四种流程。
├── client/ 模拟第三方软件(:8080)
│ ├── handler/ 请求处理器
│ └── html/ OIDC 页面模板
├── server/ 授权服务 + 受保护资源服务(:8081)
│ ├── handler/ 授权 & 资源处理器
│ └── html/ 授权页面模板
| 流程 | 端点 |
|---|---|
| 授权码许可 (Authorization Code) | GET / → GET /AppServlet |
| 隐式许可 (Implicit) | GET /token → GET /AppTokenServlet |
| 资源拥有者凭据许可 (Password) | POST /AppPasswordServlet |
| 客户端凭据许可 (Client Credentials) | POST /AppClientCredentialsServlet |
| OIDC (Authorization Code + ID Token) | GET /AppOIDCServlet |
- Go 1.26
net/http— 使用http.NewServeMux()模式路由 (Go 1.22+)log/slog— 结构化日志 (Go 1.21+)github.com/golang-jwt/jwt/v5— JWT 签发与解析github.com/google/uuid— 令牌生成crypto/rand— 安全随机数生成html/template— 页面渲染
# 启动授权服务(:8081)
cd server && go run .
# 另开终端,启动第三方软件(:8080)
cd client && go run .浏览器访问 http://localhost:8080/ 即可开始授权码许可流程。