• 企业微信之——扫码登录


    参考文献

    配置企业微信应用设置

    1.设置可信域名

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmscW2g0-1663410315300)(http://cdn.liancode.top/img/设置可信域名1.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y18chiFV-1663410315301)(http://cdn.liancode.top/img/设置可信域名2.png)]

    ❗️可信域名必须与企业主体相同或相关联

    2.设置授权回调域

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tcoFAixl-1663410315301)(http://cdn.liancode.top/img/企业微信授权登录.png)]

    ❗️授权回调域必须与可信域名一直,如果有设置端口,则端口也要配置一直,详情看开发文档

    ❗️该回调域名提前解析到服务器ip地址

    3.将ip地址添加到白名单

    OAuth2

    1.构造授权链接

    String encodeUrl = URLEncoder.encode(props.getOauth2CallbackUrl(), StandardCharsets.UTF_8);
    String url = "https://open.work.weixin.qq.com/wwopen/sso/qrConnect?" +
                "appid=" + props.getCorpid() +
                "&agentid=" + props.getAgentid() +
                "&redirect_uri=" + encodeUrl +
                "&state=" + subject.getUserId();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数说明

    参数必须说明
    appid企业微信的CorpID,在企业微信管理端查看
    agentid授权方的网页应用ID,在具体的网页应用中查看
    c重定向地址,需要进行UrlEncode
    state用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验
    lang自定义语言,支持zh、en;lang为空则从Headers读取Accept-Language,默认值为zh

    若用户不在agentid所指应用的可见范围,扫码时会提示无权限。

    假定当前

    企业CorpID:wxCorpId

    开启授权登录的应用ID:1000000

    登录跳转链接:http://api.3dept.com

    state设置为:weblogin@gyoss9

    需要配置的授权回调域为:api.3dept.com

    根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:

    https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wxCorpId&agentid=1000000&redirect_uri=http%3A%2F%2Fapi.3dept.com&state=web_login%40gyoss9

    2.授权成功后回调

    • 成功:重定向到redirect_uri会携带code和state参数

      redirect_uri?code=CODE&state=STATE
      
      • 1
    • 失败:重定向到redirect_uri,但不会携带code,仅有state参数

    • 回调业务按需处理

  • 相关阅读:
    `算法题解` `UOJ` #150. 【NOIP2015】运输计划
    1024程序员节主题征文 | 35种语言输出1024
    superset-1.5.0 docker版连接Oracle、SQL server、Elasticsearch
    c++学习之十四
    Linux-ansible详解及安装操作-命令操作
    SpringCloudAlibaba SpringCloud SpringBoot 版本对照
    [iOS]-Category、Extension和关联对象
    APISpace 验证码短信API接口案例代码
    Scala中文unicode互转
    计算机网络(六) | 应用层:HTTP协议详解
  • 原文地址:https://blog.csdn.net/weixin_45636641/article/details/126908886