参考文献
配置企业微信应用设置
1.设置可信域名
❗️可信域名必须与企业主体相同或相关联
2.设置授权回调域
❗️授权回调域必须与可信域名一直,如果有设置端口,则端口也要配置一直,详情看开发文档。
❗️该回调域名提前解析到服务器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();
参数说明
参数 | 必须 | 说明 |
---|---|---|
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
-
失败:重定向到
redirect_uri
,但不会携带code,仅有state参数 -
回调业务按需处理