前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信生态圈 | 企业微信中登录H5不便?“免密登录”来帮忙!

微信生态圈 | 企业微信中登录H5不便?“免密登录”来帮忙!

作者头像
烟雨平生
发布2023-10-25 12:36:20
3850
发布2023-10-25 12:36:20
举报
文章被收录于专栏:数字化之路数字化之路
  • 问题:在企业微信H5登录不方便

  • 免密登录是在讲什么?
  • 实现免密登录需要什么条件?
  • 如何实现?
  • 小结

问题:在企业微信中使用H5登录不高效、体验也不好

在日常工作中,我们经常需要使用企业微信进行沟通和协作。 然而,每次在企业微信打开H5页面时,都需要在H5页面输入账号密码进行登录,这不仅繁琐,而且在交互体验方面也比原生差。 那么,有没有一种方法可以让我们免去这个步骤呢? 答案是肯定的,那就是免密登录。接下来,我们将详细介绍免密登录的概念、实现条件以及具体操作方法。

“免密登录”是在讲什么?

免密登录是指在用户已经登录过某个系统或应用的情况下,再次访问该系统或应用时,无需输入账号密码即可自动完成登录的过程。这样,用户可以更加方便快捷地使用企业微信,提高工作效率。然后,享受科技带来的便捷和快乐。

另外,单点登录(Single Sign On,简称SSO)也可以实现“免密登录”。 SSO是一种在多个应用系统中实现的身份验证机制。它允许用户只需要登录一次,就可以访问所有相互信任的应用系统。 假如有两个系统,暂且叫系统A,系统B。基于SSO实现的免密登录是指系统B信任系统A的认证结果。即系统A认证通过了,拿着系统A的认证结果,系统B也认证通过。 类似中俄互免签证。

实现免密登录需要什么条件?

假设有两个系统:系统A和系统B。 一个用户A,在系统A和系统B中都有账号。 要实现免密登录,需要满足以下条件:

1、这两个系统之间的网络是通的

2、系统A和系统B中的用户数据是打通的。 从数据层面看,根据用户A在系统A中的身份信息可以在系统B中找到用户A。建议使用用户id进行关联。反之亦然。 数据打通可以通过OneID或ID-Mapping来解决。

OneID或ID-Mapping是一种将不同来源的用户标识串联起来,生成一个统一的用户标识的技术。 用户ID是描述真实世界中用户的数字化标识,这些标识在特定的上下文和生命周期中通常具有唯一性。 信息孤岛怎么破?

3、系统提供颁发身份凭证和核销身份凭证的服务。 用户A在系统A认证通过后,获取系统A的身份凭证A,并发送给系统B,系统B根据凭证A从系统A中获取用户A的身份信息。 系统B根据用户A在系统A中的身份信息找到用户A在系统B中的身份信息。譬如找到用户A在系统B中的用户id。反之亦然。 类似的实现有OAuth2.0授权码模式。

OAuth2.0授权码模式是OAuth2.0认证的四种方式之一,安全性最高,也比较常用。 具体流程如下: 1、用户访问客户端; 2、客户端将用户重定向到认证服务器; 3、用户在认证服务器上进行身份验证并授权客户端应用; 4、认证服务器向客户端发送一个授权码; 5、客户端随后使用该授权码向认证服务器请求令牌; 6、认证服务器向客户端发送令牌; 7、最后,客户端使用令牌来访问受保护的资源。 OAuth2.0授权码模式

拓展:Spring Security OAuth2是如何校验access_token的?

如何企业微信中实现免密登录?

本次来梳理下在企业微信中免密登录Admin系统

1、确保企业微信和Admin系统的网络是通的

2、企业微信系统和Admin系统的用户数据是打通的。 根据员工A在企业微信中的用户id能够找到员工A在Admin系统中的身份信息。

3、在企业微信要有一个应用。譬如应用A

3.1 设置应用A的可信域名。企业微信颁发授权码时使用

3.2 获取应用A的凭证密钥。 企业微信管理员可以提供。 4、使用企业微信的网页授权登录 基于企业微信提供的网页授权登录能力实现的自动登录流程如下:

关键步骤说明: step1: 构造网页授权链接

如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code参数:

代码语言:javascript
复制
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

员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。 code长度最大为512字节。code有效期只有5分钟,并只能使用一次。

step2: 获取access_token

获取access_token是调用企业微信API接口的第一步,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于access_token来鉴权调用者身份。 因此开发者,在使用业务接口前,要明确access_token是使用哪个应用的secret生成的,使用正确的access_token才能确保正确的业务操作。

代码语言:javascript
复制
请求方式:GET(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业微信ID&corpsecret=应用的凭证密钥

返回结果:
{
   "errcode": 0,
   "errmsg": "ok",
   "access_token": "accesstoken000001",
   "expires_in": 7200
}

权限范围说明: 每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取。 由于企业微信每个应用的access_token是彼此独立的,所以进行缓存时需要区分应用来进行存储。 https://developer.work.weixin.qq.com/document/path/91039

拓展:【微信生态圈】微信体系中的access_token有哪些?

step3: 获取访问用户身份

该接口用于根据code获取成员信息,适用于自建应用与代开发应用。

代码语言:javascript
复制
请求方式:GET(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=应用的access_token&code=step1生成的code

返回结果:
{
   "errcode": 0,
   "errmsg": "ok",
   "userid":"USERID",
   "user_ticket": "USER_TICKET"
}

权限范围说明: 跳转的域名须‍完全匹配access_token对应应用的可信域名,否则会返回50001错误。

access_token是一个字符串,会分不清是哪个应用的。 所谓设计不够,小工具来凑。 可以使用企业微信提供的工具来反向查看:

step4: 根据员工在企业微信的userId登录Admin系统

把当前员工在Admin系统中的身份信息通过通过合适的方式返回给客户端。 譬如浏览器多使用cookie,app等浏览器环境使用token

至此,已经在Admin系统已录录完成。 前端只需再跳转到期望的业务页面即可。

小结

要想使用登录一个系统,就可以访问所有相互信任的应用系统。例如,员工只需要登录个人办公自动化系统的账号密码就可以访问其他如飞书、销售易、客户系统等应用程序,无需再次输入账号和密码。这种方式大大提升了用户体验并提高了工作效率。

参考

构造网页授权链接 https://developer.work.weixin.qq.com/document/path/91022

获取access_token https://developer.work.weixin.qq.com/document/path/91039

应用的secret https://developer.work.weixin.qq.com/document/path/90665#secret

错误码查询工具 https://developer.work.weixin.qq.com/devtool/query

获取访问用户身份 https://developer.work.weixin.qq.com/document/path/91023

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 的数字化之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档