mcpField
O
oauth-implementation

oauth-implementation

github.com/aj-geddes安全374555 次安装34 周前更新
代码仓库

关于 oauth-implementation

用于实现 OAuth 2.0 和 OpenID Connect 身份验证的安全开发技能,涵盖 JWT、刷新令牌和会话管理,并提供 Node.js、Python 和 Java 实施指南。

主要功能

  1. 01OAuth 2.0 身份验证流程
  2. 02OpenID Connect 实现
  3. 03JWT 与刷新令牌处理
  4. 04安全会话管理
  5. 05Node.js、Python 和 Java 指南

适用场景

  1. 01构建用户身份验证系统
  2. 02集成第三方 API
  3. 03实现单点登录
  4. 04保护移动应用身份验证

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill oauth-implementation

安装后在 Claude Code 中输入/oauth-implementation确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
java-spring-security-oauth.md
nodejs-oauth-20-server.md
python-openid-connect-implementation.md
scripts/
security-checklist.sh

详细介绍

OAuth 实现

目录

概述

使用 JWT 令牌、刷新令牌和安全会话管理,实现符合行业标准的 OAuth 2.0 和 OpenID Connect 身份验证流程。

适用场景

  • 用户身份验证系统
  • 第三方 API 集成
  • 单点登录(SSO)实现
  • 移动应用身份验证
  • 微服务安全
  • 社交登录集成

快速开始

最简可运行示例:

// oauth-server.js - Complete OAuth 2.0 implementation
const express = require("express");
const jwt = require("jsonwebtoken");
const crypto = require("crypto");
const bcrypt = require("bcrypt");

class OAuthServer {
  constructor() {
    this.app = express();
    this.clients = new Map();
    this.authorizationCodes = new Map();
    this.refreshTokens = new Map();
    this.accessTokens = new Map();

    // JWT signing keys
    this.privateKey = process.env.JWT_PRIVATE_KEY;
    this.publicKey = process.env.JWT_PUBLIC_KEY;

    this.setupRoutes();
  }

  // Register OAuth client
  registerClient(clientId, clientSecret, redirectUris) {
    this.clients.set(clientId, {
      clientSecret: bcrypt.hashSync(clientSecret, 10),
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
Node.js OAuth 2.0 ServerNode.js OAuth 2.0 服务端
Python OpenID Connect ImplementationPython OpenID Connect 实现
Java Spring Security OAuthJava Spring Security OAuth

最佳实践

✅ 应该做
  • 对公共客户端使用 PKCE
  • 实现令牌轮换
  • 安全存储令牌
  • 全程使用 HTTPS
  • 验证重定向 URI
  • 实现速率限制
  • 使用短期访问令牌
  • 记录身份验证事件
❌ 不要做
  • 将令牌存储在 localStorage 中
  • 使用隐式授权流程
  • 跳过 state 参数
  • 暴露客户端密钥
  • 允许开放重定向
  • 使用弱签名密钥

评论

支持 Markdown