基于企业微信 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"

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

相关推荐
肥胖小羊1 天前
企业微信应用的 Token 缓存策略与分布式锁高可用设计
分布式·缓存·企业微信
噗噗121 天前
企业微信通讯录增量同步与异步任务队列的最佳实践
企业微信
肥胖小羊1 天前
企业微信审批流状态变更监听与业务系统自动化对接
运维·自动化·企业微信
噗噗121 天前
企业微信自建应用如何优雅实现高性能消息推送
企业微信
qige0012 天前
企业微信通讯录全量与增量同步架构设计
企业微信
噗噗123 天前
企业微信 API 异常监控、全局错误码与限流处理最佳实践
企业微信
wechatbot8883 天前
解决企业微信官方 API 短板:iPad 协议全功能对接方案
java·汇编·windows·http·微信·企业微信
悟空码字3 天前
企业微信变了
微信·企业微信·ai助手
欢迎来到祖安!3 天前
企业微信协议 API:主动调用 + 回调下发,一套双通道怎么跑通
企业微信