在对接自有账户体系时,FinClip 怎么做的?

2023-10-10 20:36

本文主要是介绍在对接自有账户体系时,FinClip 怎么做的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以下文章来源于 FinClip (凡泰极客)
作者:王字 Wannz

FinClip 是 Authing 的合作伙伴之一,致力于帮助企业打造更高效的一站式数字内容管理平台,旨在降低内容与渠道所形成的内容矩阵管理成本。前不久我与售前同事聊天,他们反馈说很多客户在前期了解产品的时候,都会问这样一个问题「你们的 FinClip 支持与我们自己的用户体系打通吗?」

实际上这确实也是老生常谈的问题,随着公司规模越来越大,员工需要使用的产品矩阵也会越来越丰富,不仅包括内部的 IT 系统,OA 系统,业务系统,还会有很多和外部产品集成的登录流程,更别提各种业务系统或者子系统中的账户体系了。如果使用简单粗暴的方法,让员工在每一个系统中单独注册一个独立的账户,不仅员工的用户体验简单粗暴,也会陡然提升员工密码管理的相关成本。

在开始本篇文章之前,我想先与大家聊聊,什么是账户体系认证。

01.什么是账户体系认证?


不论是在哪个产品中登录自己的账户,你可能都需要通过输入自己的手机号,用户名,邮箱或者工号的方式登录到这个产品之中(扫码其实也是一种方式)。但是在这个过程中我们为什么需要输入自己的相关信息呢?

其实在这个过程中我们主要是为了解决以下三个问题:

这三个问题是非常重要的,因为他们构成了在账户体系中身份认证和授权的基础要素,我们先尝试来分别解答这三个问题:

我是谁?
这个问题关注的是用户或系统的身份标识。在一个服务端账户体系中,你需要确保每个用户或系统都有一个唯一的标识符,通常是用户名、电子邮件地址、用户 ID 或其他独一无二的信息。这个标识符用于识别和区分不同的实体。身份验证的第一步就是验证这个标识符是否有效,并确定它对应的用户或系统。

我有什么权限?
这个问题涉及到用户或系统被授予了什么操作或资源访问权限。权限可以分为多个级别,从只读权限到完全控制权限等。在服务端的账户体系中,通常会使用角色(roles)或权限组( permission groups )来管理权限。用户或系统被分配到一个或多个角色或组,每个角色或组都定义了一组具体的权限。确保在身份验证后,根据用户或系统的角色或组确定其可访问的资源和执行的操作。

我属于什么组织?
这个问题关注的是用户或系统的组织隶属关系。在许多应用中,用户可能属于一个或多个组织,这些组织可以是公司、团队、部门等等。组织通常用于管理资源的访问和共享,以及确定用户在组织内的角色和权限。确保你的账户体系可以处理多个组织和用户在这些组织之间的关系,以便正确授权和限制资源访问。

02.如何对齐管理后台中的账户体系?


我们处理账户体系的主要任务是确保系统中的账户、角色权限、组织等信息与需要集成的系统中的相关字段能够协同工作,以实现身份验证和授权功能。业界中已经有非常专业的问题解决思路了,比如这几种方法:

单点登录 SSO
SSO 是一种常见的解决方案,允许用户在多个系统之间使用单一的身份验证凭据进行登录。通过使用标准协议(例如 OAuth、SAML、OpenID Connect 等),我们就可以将账户体系与需要集成的系统相连。在连接完毕之后,一旦用户登录了一个系统,他们就可以无需重新登录访问其他系统。
API 集成
我们也可以设计一组 API,用于管理用户、角色、权限和组织等相关信息。这些 API 可以用于创建、更新、删除用户帐户、分配角色、分配权限以及管理组织结构。其他系统可以通过调用这些 API 来实现与账户体系的互操作。
数据同步映射
有些特殊的系统可能会存在一些当前业务中所需要的业务字段,因此我们还需要考虑通过数据同步和字段映射可以用来维护不同系统之间的一致性。通过定期同步用户、角色、权限和组织等数据,确保它们在不同系统中保持一致。当然,数据同步的前提是我们需要根据定义字段映射规则,以确保不同系统中的数据可以正确匹配。
中心化人员管理
如果可能的话,我们也能够尝试去建立一个中心化的身份管理系统,这个系统负责管理所有用户、角色和权限。其他系统可以与这个中心化系统进行集成,以便统一管理身份信息。这种方式可以减少数据不一致性的问题,并简化维护。
当然,不论我们最终选择了哪一种账户体系对齐的方法,都需要考虑能够在与自有业务体系集成以外,提供足够的代码与业务审计机制,以便用于应付后续可能的审计与日志留存能力,万一在出现任何异常或未经授权访问时查证对应的问题。


03.FinClip 的管理后台账户对齐方式


正如同上文所说,我们在向一些私有化客户提供相关服务时,会分别采用“数据同步”或“实时校验”的方式解决账户体系对齐。当然由于不同客户的业务环境与内部业务水平不一,我们也分别整理出了两种方式的优势,以及需要考虑的相关风险。

方案一:数据同步
这种方式需要客户基于 FinClip 提供的 OpenAPI 与相关服务,将对应的账户信息同步在我们所提供的服务之中,最终通过统一的账户体系完成账户鉴权与登录操作。

这种方式具有这些优势

  • 较好的性能与时间优势:数据已经同步到了 FinClip 服务中,在实际使用和查询时的耗时较少,效率较高。
  • 离线支持:数据已经同步到了 FinClip 服务中,即使客户的账户对接系统失效,最终用户也依然可以完成操作与访问请求。
  • 减轻集成方负担:客户只需要定期同步数据,不再需要考虑实时请求。


当然,采用这种方式我们也需要考虑这些风险

  • 数据同步可能延迟:数据同步可能会有一定的延迟,在某些情况下可能不会立即反映出最新的账户信息。
  • 需要定期同步保证数据一致:需要定期同步和更新数据以确保一致性,但可能会引入一些同步问题。
  • 可能存在安全性风险:在数据同步期间,账户信息可能会存在风险,需要确保数据的保密性和完整性。

方案二:实时校验
这种方式需要 FinClip 通过客户提供的账户接口完成账户校验的相关工作,在获得账号相关信息后完成登录。

这种方式具有这些优势

  • 实时性较高:FinClip 能够随时请求到最新的账户信息,保证了较高的实时性。
  • 精确控制:在具体业务中可以精确地请求和获取账户中的相关信息,而不是对整个数据内容进行同步。
  • 降低数据冗余:FinClip 中不再需要单独存储账户中的相关字段数据,减少了数据冗余和一致性的相关问题。
    当然,选择这种方式我们也需要考虑这些风险:
  • 性能和响应时间不确定:实时校验可能导致延迟,特别是在高负载情况下或者集成方的系统响应较慢时。
  • 对客户集成系统的依赖较高:服务高度依赖于集成方的稳定性和性能,如果集成方出现故障或者延迟,可能会影响到 FinClip 的服务和相关能力。
  • 可能需要频繁调用:如果需要频繁访问账户信息,可能会导致过多的请求,增加了集成方的负担。
    总的来说,选择哪种方式取决于客户自有业务或 IT 系统中的需求和系统架构。假如说对实时性要求较高,就可以考虑“方案一,实时校验”。如果性能和可用性更重要,或者需要处理大量数据,“方案二,数据同步”可能更合适。

当然,在我们的实际经验中,也发现有一些客户没有选择标准协议进行对接,而是基于自有的业务场景和能力封装了一套“非标账户协议”。但不论选择标准协议还是非标准协议,这里的对接思路都差不多,即:
标准协议对接

拿到 accountID 唯一标识(基于 OAuth/SAML/OIDC 对接)

  • 用户登录:基于标准协议进行用户身份校验后登录
  • 用户角色:基于预先配置获得用户角色,用户可以自行修改/账户集成系统中自带角色管理能力
    非标协议对接

通过 token/账密/客户使用 API 先行创建接口

  • 用户登录:基于对应参数进行用户身份校验后登录
  • 用户角色:基于预先配置获得用户角色,用户可以自行修改/账户集成系统中自带角色管理能力
    通常,在实际应用中,可以综合考虑两种方式的优缺点,或者根据不同的用例选择不同的集成方式。最重要的是确保数据的一致性、安全性和可用性。


04.FinClip 的小程序账户对齐方式


在我们聊完了管理后台中的账户对齐方式后,也不妨来聊聊在“小程序业务”中,用户账户对齐的常见问题吧。

由于小程序大多时候都会作为某个宿主 App(或设备) 中的功能模块存在,因此在小程序中的登录方式一般都会基于宿主 App(或设备) 中的账户进行修改,并不会在小程序中再次出现和 App 中一模一样的登录页面。
在我们熟知的微信小程序中,一般会在小程序端调用 wx.login 获取用户 code,然后再通过服务端验证的方式调用。
在 FinClip的场景中我们也提供了丰富且灵活的用户授权方式供不同类型的开发者选择,不论哪种开发者都能够基于 FinClip 获得灵活的小程序账户对齐能力。

方案一:服务端改造
服务端改造的使用场景主要是“客户基于 FinClip 打造自有小程序生态,但无法具备小程序的代码管控的相关能力”,在这种情况下使用服务端改造的方式较为适宜。

在这种情况下,客户需要在以下环节中投入相关的改造成本:

  • 第一步:在 App 中通过自定义 API 注入 wx.login 方法,按照微信小程序的格式返回 code;
  • 第二步:小程序无需改动,按照在微信端的实现,此时会将 code 发送给开发者的服务器;
  • 第三步:开发者服务器进行适配,通过 code 可判断登录来自 FinClip 平台,从 code 中解析出 UserID,返回自身账户体系的内容即可。


方案二:服务端改造+微信授权
服务端改造与微信授权集成的场景主要适用于“客户通过 FinClip 完成原有 App 中相关功能的拆分。实际工作过程中所有的小程序都是由自有研发团队进行修改与集成的。”


在这种情况下,客户需要在以下环节中投入相关的改造成本:

  • 第一步:SDK 中集成微信开发平台 SDK;
  • 第二步:使用自定义 API 注入 wx.login,唤起微信授权后即可取得返回 code,此时可能需要对 code 拼接唯一标识;
  • 第三步:小程序无需改动,按照在微信端的实现,此时会将 code 发送给开发者的服务器;
  • 第四步:服务端根据 code 唯一标识,调用不同的授权接口取得 OpenID,查询登录态返回;
    请注意由于微信限制不同主体,不同开放平台下的 OpenID 是不一致的,此时小程序需要关联到同一主体,或者同一开放平台(此时唯一标识为 UnionID)。

方案三:小程序改造
小程序改造的使用场景主要是客户目前已经有可用于生产环境中的小程序,但需要对小程序中的内容进行逻辑修改,增加环境变量的方式(比如通过 wx.login 或类似 wx.loginFinClip 之类的自定义 API)进行判断(当然,这种情况下也需要具备小程序代码编辑的能力)。

这种情况下,主要需要在自有 App 中通过自定义 API 注入 wx.login 来获得当前用户的登录态。

这篇关于在对接自有账户体系时,FinClip 怎么做的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182921

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

禁止复制的网页怎么复制

禁止复制的网页怎么复制 文章目录 禁止复制的网页怎么复制前言准备工作操作步骤一、在浏览器菜单中找到“开发者工具”二、点击“检查元素(inspect element)”按钮三、在网页中选取需要的片段,锁定对应的元素四、复制被选中的元素五、粘贴到记事本,以`.html`为后缀命名六、打开`xxx.html`,优雅地复制 前言 在浏览网页的时候,有的网页内容无法复制。比如「360

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Wondows dos下怎么编写bat批处理文件

最近搞php,在运行时,以Nginx+php-cgi.exe方式运行Wordpress项目 打开dos,先cd到php-cgi.exe文件当前目录下执行启动命令:php-cgi.exe -b 127.0.0.1:9001再打开一个dos,再cd到nginx.exe文件当前目录下执行启动命令:start nginx 大概过程要经过这些步骤,觉得很麻烦,就学下怎么编写一个bat文件,以双击运行代替