Skip to content

认证授权实现

HiMind 工业互联网平台(HMX)采用自定义 Token 颁发与验证机制,结合 OAuth 2.0 协议思想,实现了轻量、高效、可扩展的统一认证授权体系。平台通过扩展支持短信验证码、第三方社交登录等常见业务场景,原生支持基于 Token 的交互访问,可直接作为小程序、移动 App 等各类客户端的统一认证服务端。核心设计如下:

Token 颁发

平台通过 TokenAsync 方法实现自定义 Token 颁发流程:

  • 支持图形验证码、数学公式验证码等多种验证方式
  • 基于用户 ID + 密码进行身份校验
  • Token 采用分布式缓存(Redis)存储会话状态,支持高性能访问
csharp
/// <summary>
/// 获取登录令牌(基于用户ID + 密码)
/// </summary>
[AllowAnonymous]
public async Task<string> TokenAsync(FetchTokenInput input)
{
    // 1. 验证码校验
    if (!await ValidateCaptchaAsync(input))
        throw new HmxException("验证码校验失败");

    // 2. 用户身份校验
    var user = await ValidateUserAsync(input.UserId, input.Password);

    // 3. 获取或创建用户会话 Token
    var userToken = await GetOrCreateUserTokenAsync(input.UserId);

    // 4. 缓存 Token 到 Redis(支持分布式会话)
    await DistributedCache.SetAsync($"user:token:{input.UserId}", userToken);

    return userToken.CToken;
}

Token 验证

平台通过 ASP.NET Core 拦截器(IAsyncActionFilter) 实现统一的 Token 验证与工作单元管理:

csharp
public class UnitOfWorkFilter : IAsyncActionFilter
{
    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        // 1. 获取请求上下文中的客户端信息
        var client = context.HttpContext.SmartFindClient();

        // 2. 开启工作单元(事务管理)
        using (var umgr = UnitOfWorkManager.Begin(attribute.Scope, attribute.IsolationLevel))
        {
            // 3. 自定义授权验证(Token 校验、权限判断等)
            await Authorize(context);

            // 4. 执行真正的业务逻辑
            await next();

            // 5. 提交事务
            umgr.Complete();
        }
    }
}

技术架构优势

  • 轻量高效:不依赖第三方认证框架,减少外部依赖和配置复杂度
  • 灵活可控:Token 生成、存储、验证全流程自主可控,便于定制化扩展
  • 高性能:基于 Redis 分布式缓存存储 Token 会话,支持水平扩展
  • 事务集成:将认证授权与工作单元(UnitOfWork)无缝集成,确保数据一致性

与 OAuth 2.0 协议的关系

HMX 平台虽然采用自定义 Token 机制,但在设计思想上遵循 OAuth 2.0 核心规范:

  • Token 作为访问凭证,支持 Bearer Token 标准请求头传递方式
  • 支持 Token 有效期管理、刷新机制等核心能力
  • 可根据业务需要,平滑演进到标准 OAuth 2.0 认证中心方案

技术架构总结

能力维度HMX .NET 10 实现
Token 颁发自定义 TokenAsync 方法
Token 存储Redis 分布式缓存
Token 验证IAsyncActionFilter 拦截器 + Authorize 方法
事务管理UnitOfWorkManager 工作单元
验证码支持图形验证码 + 数学公式验证码
扩展能力支持短信登录、社交登录等第三方认证

HiMind 工业互联网平台 技术文档