Skip to main content

NodeLoc OAuth2 快速开始

NL OAuth2是一个基于Discourse的SSO的身份认证服务,允许应用程序使用NL用户系统进行身份验证和授权。

服务端点

快速开始流程

1

注册应用

访问 https://conn.nodeloc.cc/apps 创建新应用
2

获取凭据

获取 Client ID 和 Client Secret(请妥善保存)
3

实现授权流程

按照 OAuth2 标准流程实现用户授权
4

获取用户信息

使用访问令牌获取用户详细信息

应用注册

1. 访问管理界面

  1. 访问 https://conn.nodeloc.cc/apps
  2. 首次访问会重定向到NL进行身份验证
  3. 登录后点击”Create New Application”

2. 填写应用信息

应用名称: My App
描述: My OAuth2 Application  
重定向URI: https://myapp.com/auth/callback
允许的组: trust_level_0 (可选)
拒绝的组: banned (可选)
重要: 保存显示的Client Secret,它只会显示一次

3. 获取应用凭据

注册成功后,你将获得:
  • Client ID: 用于标识应用
  • Client Secret: 用于应用认证
  • 重定向URI: 用户授权后的回调地址

OAuth2 标准流程

流程概览

快速示例

// 1. 重定向到授权页面
const authUrl = 'https://conn.nodeloc.cc/oauth2/auth?' + new URLSearchParams({
  response_type: 'code',
  client_id: 'YOUR_CLIENT_ID',
  redirect_uri: 'https://myapp.com/callback',
  scope: 'openid profile',
  state: 'random_state_string'
});

window.location.href = authUrl;

// 2. 处理回调,交换令牌
const response = await fetch('https://conn.nodeloc.cc/oauth2/token', {
  method: 'POST',
  headers: {
    'Authorization': 'Basic ' + btoa('CLIENT_ID:CLIENT_SECRET'),
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: new URLSearchParams({
    grant_type: 'authorization_code',
    code: 'authorization_code_here',
    redirect_uri: 'https://myapp.com/callback'
  })
});

const tokens = await response.json();

// 3. 获取用户信息
const userResponse = await fetch('https://conn.nodeloc.cc/oauth2/userinfo', {
  headers: { 'Authorization': 'Bearer ' + tokens.access_token }
});

const userInfo = await userResponse.json();

安全最佳实践

客户端密钥保护

永远不要在前端代码中暴露Client Secret
  • 使用环境变量存储敏感信息
  • 在服务器端处理令牌交换
  • 定期轮换客户端密钥

CSRF 防护

始终使用随机的state参数防止CSRF攻击
  • 生成随机state值
  • 在回调中验证state参数
  • 使用HTTPS传输敏感数据

令牌管理

  • 安全存储访问令牌和刷新令牌
  • 实现令牌自动刷新机制
  • 处理令牌过期情况

下一步