锋翎文档
Java SDKgRPC 服务

Auth 服务

认证服务:注册、登录、改密

Auth 服务

Auth 服务提供用户认证相关功能,包括注册、登录、修改密码和注销令牌。

Auth 服务需要在 metadata 中提供有效的 App 凭证(app-access-idapp-secret-key),由 GrpcUtil 自动注入。

接口概览

方法说明返回 Token
RegisterByEmail邮箱注册Yes
PasswordLogin密码登录Yes
ChangePassword修改密码No
RevokeToken注销令牌No

RegisterByEmail

通过邮箱验证码完成用户注册,注册成功后自动生成登录 Token。

请求参数

参数类型必填说明
emailstringYes邮箱地址
passwordstringYes密码
usernamestringYes用户名
codestringYes邮箱验证码
nicknamestringNo昵称

响应

字段类型说明
userIdstring用户 ID
accessTokenstring访问令牌
refreshTokenstring刷新令牌
expiresInint64过期时间(秒)

使用示例

// 1. 先发送验证码
ssoApi.pub().sendRegisterEmailCode(
    SendRegisterEmailCodeRequest.newBuilder()
        .setEmail("user@example.com")
        .build()
);

// 2. 用户输入验证码后注册
var resp = ssoApi.account().registerByEmail(
    RegisterByEmailRequest.newBuilder()
        .setEmail("user@example.com")
        .setCode("123456")
        .setUsername("newuser")
        .setPassword("SecurePass123!")
        .setNickname("New User")
        .build()
);

System.out.printf("注册成功!用户 ID: %s%n", resp.getUserId());
System.out.printf("Access Token: %s%n", resp.getAccessToken());

PasswordLogin

实现 OAuth 2.0 Resource Owner Password Credentials Grant,允许受信任的第一方客户端直接使用用户名和密码换取 Token。

安全限制

  • 仅限第一方应用App.FirstParty = enabled
  • 支持用户名/邮箱/手机号三种登录方式(自动识别)

请求参数

参数类型必填说明
usernamestringYes用户名/邮箱/手机号
passwordstringYes密码
scopestringNo权限范围(如 openid profile email
clientIpstringNo客户端 IP 地址
userAgentstringNo客户端 User-Agent

响应

字段类型说明
accessTokenstring访问令牌
tokenTypestring令牌类型(通常为 Bearer
expiresInint64过期时间(秒)
refreshTokenstring刷新令牌
scopestring实际授权范围
idTokenstringID Token(可选)

使用示例

var resp = ssoApi.account().passwordLogin(
    PasswordLoginRequest.newBuilder()
        .setUsername("user@example.com")
        .setPassword("SecurePass123!")
        .setScope("openid profile email")
        .build()
);

if (resp == null) {
    throw new RuntimeException("登录失败");
}

System.out.println("登录成功!");
System.out.printf("Access Token: %s%n", resp.getAccessToken());
System.out.printf("过期时间: %d 秒%n", resp.getExpiresIn());

密码登录会自动缓存 Token,可通过 AuthLogic 相关方法获取。

ChangePassword

修改用户密码,支持普通模式和强制重置模式。

模式说明

模式条件旧密码
普通模式NeedResetPassword=false必填
强制重置模式NeedResetPassword=true可省略

请求参数

参数类型必填说明
userIdstringYes用户 ID
oldPasswordstring视模式旧密码(普通模式必填)
newPasswordstringYes新密码

使用示例

// 普通模式修改密码
ssoApi.account().changePassword(
    ChangePasswordRequest.newBuilder()
        .setUserId("user-123")
        .setOldPassword("OldPass123!")
        .setNewPassword("NewSecurePass456!")
        .build()
);

// 强制重置模式(管理员场景,无需旧密码)
ssoApi.account().changePassword(
    ChangePasswordRequest.newBuilder()
        .setUserId("user-123")
        .setNewPassword("NewSecurePass456!")
        .build()
);

RevokeToken

注销用户 Token,实现用户登出功能。符合 RFC 7009 OAuth 2.0 Token Revocation 规范。

使用场景

  • 用户主动登出
  • Token 泄露后的紧急注销

请求参数

参数类型必填说明
tokenstringYes需要注销的 Token
tokenTypeHintstringNo令牌类型提示(access_token / refresh_token

使用示例

// 注销 Access Token
ssoApi.account().revokeToken(
    RevokeTokenRequest.newBuilder()
        .setToken(accessToken)
        .setTokenTypeHint("access_token")
        .build()
);

// 注销 Refresh Token
ssoApi.account().revokeToken(
    RevokeTokenRequest.newBuilder()
        .setToken(refreshToken)
        .setTokenTypeHint("refresh_token")
        .build()
);

SDK 的 HTTP 路由层调用 RevokeToken 后会自动清理本地缓存。

HTTP 路由

SDK 提供以下 Auth 相关 HTTP 路由(需启用 gRPC):

方法路径说明
POST/account/register/email邮箱注册
POST/account/login/password密码登录
POST/account/password/change修改密码(需认证)
POST/account/token/revoke注销令牌(需认证)

Auth 路由依赖 gRPC 服务,需配置 beacon.sso.grpc.enabled=true 及相关连接参数。

On this page