0 authkit
快速将OAuth添加到应用程序中,并使用最少的样板文件。
authkit为谷歌+ GitHub的OAuth流提供了一个小的TypeScript SDK。
项目运行状况(诚实状态)
- ✅构建通道
- ✅基本自动化测试(核心认证+回调安全检查)
- ✅核心流程实现:认证URL,令牌交换,配置文件获取
- ✅状态验证支持(通过)
expectedState在回调)
所以:坚实的小型黑客基础,但在称之为生产级之前添加测试。
安装
npm install 0authkit
60秒集成(服务器端)
1)制作工具包
import { OAuthKit } from '0authkit'
const kit = new OAuthKit({
provider: 'google',
clientId: process.env.GOOGLE_CLIENT_ID!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
redirectUri: 'http://localhost:3000/auth/callback',
})
2)重定向用户
app.get('/auth/google', async (req, res) => {
const { url, state, codeVerifier } = await kit.getAuthUrl()
req.session.oauthState = state
req.session.oauthCodeVerifier = codeVerifier
res.redirect(url)
})
3)处理回调
app.get('/auth/callback', async (req, res) => {
const result = await kit.handleCallback(
String(req.query.code),
String(req.query.state)
)
// Recommended: use server functional API for explicit state/codeVerifier checks
// import { handleCallback } from '0authkit/server'
// const result = await handleCallback({
// provider: 'google',
// code: String(req.query.code),
// state: String(req.query.state),
// expectedState: req.session.oauthState,
// codeVerifier: req.session.oauthCodeVerifier,
// clientId: process.env.GOOGLE_CLIENT_ID!,
// clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
// redirectUri: 'http://localhost:3000/auth/callback',
// })
res.json(result.profile)
})
最佳实践回调(推荐)
使用 0authkit/server 这样您就可以显式地验证状态和PKCE验证器。
import { getAuthUrl, handleCallback } from '0authkit/server'
app.get('/auth/google', async (req, res) => {
const { url, state, codeVerifier } = await getAuthUrl({
provider: 'google',
clientId: process.env.GOOGLE_CLIENT_ID!,
redirectUri: 'http://localhost:3000/auth/callback',
})
req.session.oauthState = state
req.session.oauthCodeVerifier = codeVerifier
res.redirect(url)
})
app.get('/auth/callback', async (req, res) => {
const result = await handleCallback({
provider: 'google',
code: String(req.query.code),
state: String(req.query.state),
expectedState: req.session.oauthState,
codeVerifier: req.session.oauthCodeVerifier,
clientId: process.env.GOOGLE_CLIENT_ID!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
redirectUri: 'http://localhost:3000/auth/callback',
})
res.json(result.profile)
})
入口点
| 进口 | 使用 |
|---|---|
0authkit | 基于类的服务器API |
0authkit/server | 功能伺服器API (getAuthUrl, handleCallback) |
0authkit/client | Client-safe getAuthUrl 只有 |
供应商
| 提供者 | 状态 | PKCE |
|---|---|---|
| 谷歌 | ✅ | ✅ |
| GitHub | ✅ | ❌ |
安全笔记
- 保持
clientSecret仅在服务器上。 - 始终坚持+验证
state(expectedState)。 - 对于PKCE提供程序,持久化+重用
codeVerifier. - 在生产环境中使用HTTPS。
输出的形状
result.tokens // { accessToken, refreshToken?, expiresIn?, tokenType, scope? }
result.profile // { id, email, name, avatar, raw }
建造的 thejamesnick