基于企业微信 OAuth2.0 的单点登录(SSO)系统架构设计

企业内部系统往往存在多套账号密码,导致用户体验繁琐。利用企业微信提供的 OAuth2.0 授权登录能力,可以让员工直接免密登录内部 Web 系统。

登录认证流程

  1. 引导跳转 :前端引导用户访问企业微信授权链接,用户在客户端确认授权后,重定向回业务系统并带上 code。

  2. 换取身份 :后端接收到 code 后,请求统一接口换取当前用户的 UserId。

  3. 建立会话 :通过 UserId 查询本地数据库匹配员工信息,颁发系统自身的 JWT 或 Session,完成登录。

后端核心验证代码

以下是后端通过 code 获取用户身份的实现:

python 复制代码
import requests

def get_user_info_by_code(agent_id, code):
    """
    通过 OAuth2 授权 code 获取企业微信用户身份
    """
    access_token = get_cached_access_token(agent_id)
    url = f"https://api.qiweapi.com/cgi-bin/user/getuserinfo?access_token={access_token}&code={code}"
    
    response = requests.get(url)
    result = response.json()
    
    if "userid" in result:
        # 企业成员登录成功
        return {
            "userid": result["userid"],
            "deviceid": result.get("device_id", "")
        }
    elif "openid" in result:
        # 外部联系人(C端用户)登录
        return {
            "openid": result["openid"]
        }
    else:
        raise Exception(f"OAuth authentication failed: {result.get('errmsg')}")

def get_cached_access_token(agent_id):
    # 获取缓存 Token 的逻辑
    return "TOKEN"

结合前端路由拦截器,当检测到未登录状态时自动触发该授权流程,即可无缝融入企业的数字化办公底座。

相关推荐
地球@+jdhb441 天前
企业私域运营新趋势:快手短视频平台跳转小程序企微卡片链路搭建成为商家运营重点
小程序·企业微信
ITyunwei09872 天前
ITIL 5 落地前,先补齐工单数据底座的 4 步
运维·企业微信
9624563 天前
从 ERP 变更记录到企业微信实时通知:标准工时变更通知系统工程复盘
企业微信
随性而行3603 天前
企业微信二次开发如何接入大模型工具?API接口实现智能任务调用的技术思路
java·前端·人工智能·python·微信·机器人·企业微信
爱签AI电子合同3 天前
电子合同大批量怎么测?并发与批量处理维度专项测评
服务器·数据库·人工智能·企业微信·电子签名
本人手速666+4 天前
企微开发API如何设计客户冻结状态?WeComApi 在删除、投诉和异常客户场景中的自动化边界
运维·分布式·自动化·企业微信·企微外部群开发·wecomapi·企业微信二次开发
AlexCookie4 天前
低空周报(第五期)2026年9月21日‑9月27日|多地新版适飞空域落地,西安低空大会集中产业对接,eVTOL政企签约释放商业化信号
经验分享·企业微信·创业创新·低空经济·行业周报
爱签AI电子合同4 天前
电子合同上手成本怎么测?易用性维度专项测评
服务器·人工智能·智能合约·企业微信
天空属于哈夫克310 天前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
wechatbot88810 天前
极客互动企业微信 SCRM 自动运营平台效果实测
java·微信·企业微信·rpa