×

dhf 发表于 2025-6-27 09:57
  
道路千万条,学习第一条!每天迅速GET新知识!
app本身已具备拉起企微/钉钉认证功能时的零信任SDK集成方案
  

杨童 202612人觉得有帮助

{{ttag.title}}
本帖最后由 杨童 于 2025-1-14 14:27 编辑

需求背景:
某客户有自建的手机APP应用,已经集成了企微/钉钉的sdk,实现了一键拉起企微/钉钉APP认证的能力。现在需要在APP中集成零信任SDK,实现暴露面收缩。需要把零信任的认证融合到已有的企微/钉钉认证中,实现单点登录

方案思路概述:
在原本的企微/钉钉的oauth2认证流程中插入零信任sdk+https认证,使code传输过程经过sdk+http(s)认证透传,由零信任代理app和app服务器之间的交互,以此实现app客户端、零信任sdk、零信任服务端、app服务器之间的单点登录


方案设计思路依据和分析:
1、钉钉/企微的认证逻辑分析:两者都是基于oauth2实现,客户APP原本的认证流程如下,和标准oauth2流程基本无差别
2、企微/钉钉的服务器、SDK接口文档如下
企微SDK本地认证接口说明
https://developer.work.weixin.qq.com/document/path/91194
企微获取access_token的说明
https://developer.work.weixin.qq.com/document/path/91039
企微获取基础用户信息说明
https://developer.work.weixin.qq.com/document/path/91023
企业微信获取详细用户信息说明
https://developer.work.weixin.qq.com/document/path/95833

钉钉SDK本地认证接口获取code说明
https://open.dingtalk.com/document/orgapp/jsapi-get-auth-code
钉钉获取access_token的接口说明
https://open.dingtalk.com/document/orgapp/obtain-the-access_token-of-an-internal-app
钉钉获取用户信息的接口说明
https://open.dingtalk.com/document/orgapp/obtain-the-userid-of-a-user-by-using-the-log-free

2、零信任认证逻辑分析:

    2.1、零信任SDK认证逻辑分析:SDK集成到APP内部后,SDK本身提供了账号密码的填写接口,APP可以将账号、密码、短信验证码等标准字符或者是任意的字符,填写到SDK的用户名和密码栏目,然后SDK会将这些字段透传到零信任控制中心,控制中心通过识别这些信息进行认证或者找外部服务器进行认证

    2.2、关于认证方式的选择:要把APP已有的认证流程中加入零信任的过程,只能使用http(s)认证,因为只有http(s)认证可以通过自定义http请求实现字段透传,将oauth2流程中的code、token进行透传交互,在认证流程中插入http(s)认证,零信任就可以介入整个认证流程,从而在流程中获取到认证结果和用户信息,实现零信任的同步上线。其他认证方式均无法实现此效果,只能http(s)认证

    2.3、加入零信任sdk和http(s)认证后的交互流程图如下:


APP改造和零信任配置思路:
1、改造code传输逻辑:根据流程图可知,原本app从企微/钉钉获取到code之后,需要将code传给APP本身的认证服务器,改造后加入了零信任sdk,就需要改造把code传给sdk的认证接口,填写到用户名或者密码字段,以此来实现sdk将code透传到零信任服务端
这里需要将接口文档提供给app开发人员,让开发改造即可
https://bbs.sangfor.com.cn/atrustdeveloper/appsdk/android/android_sdk_username_password_auth.html
将code传到下图这个用户名或密码字段


2、零信任认证服务器配置:根据前期方案分析,零信任需要配置http(s)认证,来实现将sdk发来的code透传到后端APP认证服务器。此过程需要获取app认证服务器的回调接口格式要求,根据回调接口要求配置http(s)认证服务器
这里需要一线配置http(s)认证,根据app服务器的认证接口文档配置http(s)认证服务器,配置要点就是要实现将SDK通过账号密码字段传来的code透传到APP服务器的回调接口
配置参考如下,如果app是把code传到了用户名字段,字段(key)使用APP服务器要求即可,值(value)则直接使用内置变量{{user.username}}即可,具体根据app服务器要求配置,本文仅提供思路



3、APP服务器回调接口改造(可能涉及):由于之前app的认证服务器是从app客户端接收code和返回认证结果,现在对象变成了零信任服务端,服务器的响应报文需要满足两个条件
    3.1、信息可读性:需要确保原本app服务器回复给app客户端的信息零信任能够解读,最好使用标准的json、xml格式(如果用其他如文本等隔世,需要通过响应数据预处理模块解决)
    3.2、信息完整性:原本app服务器和客户端交互时肯定带有比如认证通过等字段,也可能带有用户名/组织架构等字段,如果有则零信任可以复用,如果没有则需要根据零信任的要求进行改造。
零信任要求响应报文中必须有比如用户名这种唯一标识和认证成功&失败标识字段,要确保响应报文中有这些信息,零信任服务端才能够识别到对应用户身份和透传到SDK提供给APP调用(手机号/组织架构等字段可以根据实际情况决定,非必须)
配置参考如下,零信任需要配置用户名映射,将app服务器返回的用户名字段解析给零信任本地,提供给零信任本地校验用户是否存在。扩展字段则根据需求(如果存在有app需要透传到app客户端的信息则使用)。认证成功条件根据返回信息判断配置即可。本文仅供参考


4、APP认证状态监听:原本APP客户端是直接和APP认证服务器交互获取认证结果,加入零信任SDK后,需要改造成监听SDK的认证结果接口,从SDK的认证接口中获取认证结果。同时如果有特殊的字段需要APP服务器通过零信任透传到客户端,也是通过此接口获取,如下图

打赏鼓励作者,期待更多好文!

打赏
25人已打赏

发表新帖
热门标签
全部标签>
新版本体验
纪元平台
每日一问
功能体验
高手请过招
GIF动图学习
产品连连看
安装部署配置
标准化排查
【 社区to talk】
每日一记
技术盲盒
社区新周刊
2025年技术争霸赛
信服课堂视频
技术笔记
安全效果
技术顾问
SDP百科
技术晨报
排障那些事
升级&主动服务
行业实践
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
排障笔记本
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
2023技术争霸赛专题
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
平台使用
山东区技术晨报
文档捉虫
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
西北区每日一问
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力
专家说
热门活动
产品动态
产品解析
关键解决方案

本版版主

0
2
1

发帖

粉丝

关注

40
11
5

发帖

粉丝

关注

4
3
4

发帖

粉丝

关注

65
6
1

发帖

粉丝

关注

2
4
0

发帖

粉丝

关注

本版达人