企微获取用户敏感数据

1、企微配置可信域名
2、企微获取成员userID
3、企微获取用户敏感数据
4、企微配置回调服务



一、简介

1、企微数据安全更新

从2022年6月20号20点开始,除通讯录同步以外的基础应用(如客户联系、微信客服、会话存档、日程等),以及新创建的自建应用与代开发应用,调用该接口时,不再返回以下字段:头像、性别、手机、邮箱、企业邮箱、员工个人二维码、地址,应用需要通过oauth2手工授权的方式获取管理员与员工本人授权的字段。

2、身份验证方式

在这里插入图片描述

目前有2种身份验证方式:网页授权登录、扫码授权登录。

2.1 网页授权登录(企微内部)

官网地址

企业微信提供了OAuth的授权登录方式,可以让从企业微信终端打开的网页获取成员的身份信息,从而免去登录的环节。
企业应用中的URL链接(包括自定义菜单或者消息中的链接),均可通过OAuth2.0验证接口来获取成员的UserId身份信息。

企业微信OAuth2接入流程

调用流程为:
A) 用户访问第三方服务,第三方服务通过构造OAuth2链接(参数包括当前第三方服务的身份ID,以及重定向URI),将用户引导到认证服务器的授权页
B) 用户选择是否同意授权
C) 若用户同意授权,则认证服务器将用户重定向到第一步指定的重定向URI,同时附上一个授权码。
D) 第三方服务收到授权码,带上授权码来源的重定向URI,向认证服务器申请凭证。
E) 认证服务器检查授权码和重定向URI的有效性,通过后颁发AccessToken(调用凭证)

在这里插入图片描述

静默授权与手动授权

  • 静默授权:用户点击链接后,页面直接302跳转至 redirect_uri?code=CODE&state=STATE
  • 手动授权:用户点击链接后,会弹出一个中间页,让用户选择是否授权,用户确认授权后再302跳转至 redirect_uri?code=CODE&state=STATE
2.2 扫描授权登录(浏览器)

企业微信提供了OAuth的扫码登录授权方式,可以让企业的网站在浏览器内打开时,引导成员使用企业微信扫码登录授权,从而获取成员的身份信息,免去登录的环节。

在这里插入图片描述

二、企微应用配置

在这里插入图片描述

1、企微配置可信域名

参考另一篇

企微配置可信域名

https://blog.csdn.net/lydms/article/details/128885914

2、企微授权登录

在这里插入图片描述

3、企微可信IP

仅所配IP可通过接口获取企业数据。

在这里插入图片描述

三、网页授权登录方式(企微)

1、构造网页登录链接

https://open.weixin.qq.com/connect/oauth2/authorize?appid={{CORPID}}&redirect_uri={{REDIRECT_URI}}&response_type={{code}}&scope={{snsapi_base}}&state={{STATE}}&agentid={{AGENTID}}#{{wechat_redirect}}

参数说明:

参数必须说明
appid企业的CorpID
redirect_uri授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type返回类型,此时固定为:code
scope应用授权作用域。 snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId); snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。
state重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
agentid应用agentid,建议填上该参数(如果为第三方应用或者代开发自建应用,未填该参数不会触发接口许可自动激活)。snsapi_privateinfo时必填否则报错;
#wechat_redirect终端使用此参数判断是否需要带上身份信息

员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。code长度最大为512字节。

  • 假定当前企业CorpID:wxCorpId
  • 访问链接:http://api.3dept.com/cgi-bin/query?action=get
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxCorpId&redirect_uri=http%3a%2f%2fapi.3dept.com%2fcgi-bin%2fquery%3faction%3dget&response_type=code&scope=snsapi_base&state=#wechat_redirect

2、企微打开授权

在企微打开后,会进入登录授权页面,打开相应连接后:

在这里插入图片描述

授权成功后,重定向地址:

企业可根据code参数调用获取员工的信息

http://lydms.com/?code=ra8mSx5bH_mga5OqylDfvuiAoXuI8ixqPipUsBbd9iQ&state=date001

3、获取访问用户身份

**请求方式:**GET(HTTPS
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token={{ACCESS_TOKEN}}&code={{CODE}}
参数说明:

参数必须说明
access_token调用接口凭证
code通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

返回参数

{
  "userid": "lydms",
  "errcode": 0,
  "errmsg": "ok",
  "user_ticket": "PY_KcdqUjOPC6drzEjisMV3gRxEJayOwjbNlaZirW3r6tRQ6A2Lb3T-ibT07giuXmP7EIM6XwkbqPzzrl3dweqtx4HoLFMeql5qpDARv0bw",
  "expires_in": 1800
}
参数说明
errcode返回码
errmsg对返回码的文本描述内容
userid成员UserID。若需要获得用户详情信息,可调用通讯录接口:读取成员。如果是互联企业/企业互联/上下游,则返回的UserId格式如:CorpId/userid
user_ticket成员票据,最大为512字节,有效期为1800s。 scope为snsapi_privateinfo,且用户在应用可见范围之内时返回此参数。 后续利用该参数可以获取用户信息或敏感信息,参见"获取访问用户敏感信息"。暂时不支持上下游或/企业互联场景

4、获取访问用户敏感信息

**请求方式:**POST(HTTPS
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token={{ACCESS_TOKEN}}

{
   "user_ticket": "USER_TICKET"
}

参数说明:

参数必须说明
access_token调用接口凭证
user_ticket成员票据

返回参数:

{
  "errcode": 0,
  "errmsg": "ok",
  "userid": "lydms",
  "mobile": "15811000000",
  "gender": "1",
  "email": "lydms@lydms.com",
  "avatar": "https://wework.qpic.cn/wwpic/250331_p99RzeaaZ_16760317/0",
  "qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vcf0b80b68e7a59",
  "biz_mail": "lydms@lydms.com",
  "address": ""
}

参数说明:

参数说明
errcode返回码
errmsg对返回码的文本描述内容
userid成员UserID
gender性别。0表示未定义,1表示男性,2表示女性。仅在用户同意snsapi_privateinfo授权时返回真实值,否则返回0.
avatar头像url。仅在用户同意snsapi_privateinfo授权时返回
qr_code员工个人二维码(扫描可添加为外部联系人),仅在用户同意snsapi_privateinfo授权时返回
mobile手机,仅在用户同意snsapi_privateinfo授权时返回,第三方应用不可获取
email邮箱,仅在用户同意snsapi_privateinfo授权时返回,第三方应用不可获取
biz_mail企业邮箱,仅在用户同意snsapi_privateinfo授权时返回,第三方应用不可获取
address仅在用户同意snsapi_privateinfo授权时返回,第三方应用不可获取

四、扫描授权登录(浏览器)

1、构造独立窗口登录二维码

https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=CORPID&agentid=AGENTID&redirect_uri=REDIRECT_URI&state=STATE

参数说明

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

案例:

假定当前
企业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

返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数。

2、扫码登录

在浏览器输入一下地址后:

https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=ww3e40cde07cca01&agentid=1000002&redirect_uri=https%3A%2F%2Fwww.lydms.com&state=web_login%40gyoss9

用户扫码登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3uQo3C0a-1676134790626)(/Users/liyangda/Library/Application Support/typora-user-images/image-20230212005120479.png)]

获取到重定向的地址

https://www.lydms.com/?code=Ta_E0rVc30IDRbmZ14mBnIDdmAOdsF-cJk4ZbNRWrgA&state=web_login@gyoss9&appid=ww3e40cde07cc21a01

3、获取访问用户身份

该接口用于根据code获取成员信息

**请求方式:**GET(HTTPS
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明:

参数必须说明
access_token调用接口凭证
code通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

权限说明:
跳转的域名须完全匹配access_token对应应用的可信域名,否则会返回50001错误。
返回结果:
a) 当用户为企业成员时返回示例如下:

{
   "errcode": 0,
   "errmsg": "ok",
   "userid":"lydms"
}
参数说明
errcode返回码
errmsg对返回码的文本描述内容
userid成员UserID。若需要获得用户详情信息,可调用通讯录接口:读取成员
  • 47
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 88
    评论
### 回答1: 脱敏是保护用户隐私的重要手段之一。使用Java用户敏感数据进行脱敏处理可以使用以下方法: 1. 字符串脱敏:将敏感字符串的一部分字符替换为特殊字符,如“*”。 2. 哈希脱敏:使用哈希算法对敏感字符串进行散列处理,将其映射为一串固定长度的字符串,以避免数据泄露。 3. 加密脱敏:使用加密算法对敏感字符串进行加密处理,以保护数据安全。 选择合适的脱敏方法取决于数据的类型和敏感程度,以及对数据安全和可用性的要求。 ### 回答2: 敏感数据脱敏是一种安全措施,旨在保护用户的个人隐私。Java作为一种强大的编程语言,可以提供多种方法来实现敏感数据的脱敏处理。 首先,我们可以使用Java中的字符串操作函数来对敏感数据进行脱敏处理。比如,我们可以使用String类中的substring方法只保留敏感数据的部分信息,如只保留前几个字符,例如只保留手机号码的前三位和后四位。同时,我们还可以使用String类中的replace方法将部分敏感数据替换为符号或特定字符,如将身份证号中的中间数字替换为*号。 其次,Java还提供了正则表达式功能,可以对敏感数据进行更精确的脱敏处理。我们可以使用正则表达式来匹配和提取敏感数据的特定模式,然后对匹配到的数据进行替换或隐藏处理,如将信用卡号的前12位替换为*号。 此外,Java还支持加密算法,可以对敏感数据进行加密存储。我们可以使用Java中的密码算法库,如MD5、SHA等,对敏感数据进行加密处理,将数据转化为不可逆的密文存储。 最后,通过合理的代码设计和权限控制,我们可以将敏感数据存储在安全的数据库中,并限制只有特定用户或角色才能访问和处理敏感数据。 总之,使用Java用户敏感数据进行脱敏处理可以采用字符串操作、正则表达式、加密算法等多种方法,以确保用户隐私的安全性。同时,我们还需注意设置适当的权限控制和数据存储等安全措施,以保护敏感数据的保密性和完整性。 ### 回答3: 对于敏感数据的脱敏处理,使用Java编程语言可以采取以下几个步骤: 1. 引入相关的数据脱敏工具类或库:为了方便进行脱敏处理,可以引入一些已经开发好的数据脱敏工具类或库,例如Apache StringUtils等。 2. 选择合适的脱敏策略:根据敏感数据的具体类型和要求,选择合适的脱敏策略。常见的脱敏策略包括替换、加密、截取等。例如,对于姓名可以选择只保留姓氏或者用星号代替;对于电话号码可以选择保留前几位和后几位,中间用星号代替。 3. 编写脱敏处理代码:根据选择的脱敏策略,编写相应的脱敏处理代码。可以使用字符串的截取、替换等方法,将敏感数据按照脱敏策略进行处理。例如,使用StringUtils类的replace方法将电话号码的中间几位替换为星号。 4. 对敏感数据进行测试:编写测试用例,对处理后的敏感数据进行测试,确保脱敏处理结果符合预期。可以使用JUnit等单元测试框架进行测试,保证代码的正确性和稳定性。 5. 封装脱敏处理方法:根据需求,可以将脱敏处理代码封装成一个方法,方便在需要的地方调用。可以设置该方法的参数,使得用户可以自定义脱敏策略,并提供默认的处理策略。 采用Java编程语言对用户敏感数据进行脱敏处理可以有效保护用户隐私,防止敏感数据泄露。通过合理选择脱敏策略和编写相应的脱敏处理代码,可以确保脱敏后的数据仍然具有一定的可用性和完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 88
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ha_lydms

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值