Authing · 2019年10月27日

Authing | 身份上云 or 自建?这里有 20 个问题值得你思考

身份管理自从计算机问世以来就存在,很多人觉得身份管理很简单,其实难度远超你的想象。

一、为什么要自建身份管理?

自计算机问世以来,身份管理一直是软件的主要组成部分:打孔机和早期操作系统都受到用户名/密码身份验认证的保护。拥有如此悠久的历史,你会认为身份管理是一个已经被妥善解决的问题。

自建身份管理一般在以下场景有充足的理由:

  1. 你正在做一些简单的事情:没有敏感信息或隐私问题,并且你的安全性要求不高,你的用户数量不多,同时用户类型比较单一,只有几个应用程序;
  2. 你是一位经验丰富的开发人员,并且在顶尖团队中工作,多年来一直为应用程序,网站,API 和服务构建身份认证;
  3. 某天你的预算减少了,这时你必须选择一些方案来为组织的大战略省钱;

坦白说,如果你只有一个简单的 Web 应用,只需要一两个社交应用提供一键登录,并且不需要「用户名 - 密码」或其他更细致的用来登录的功能,那么自建就很容易。你可以在 Github 上找到大量开源框架来解决此类问题。

二、为什么要购买身份管理服务?

我们经常听到客户的研发团队这么评价 Authing:

> 我们自己就能做,为什么要用你们的,而且还要付钱?

接下来让我们深入研究这个问题。

1、专业的人做专业的事

实现一套身份管理看上去似乎很简单。但是失败是很可怕的,一旦出现了问题,你的品牌就会受到严重损害。面对持续的黑客攻击,和无休止的漏洞,你是否能准确知道自己的工作足够好到可以保护用户隐私和企业资产?

2、投入产出比

自建身份管理并不是免费的!
将资源到投入身份管理研发时会产生高昂的的机会成本。身份认证真的是你想要做的吗?假如你做一款应用,会自己写一套 RDBMS(关系数据库管理系统) 吗?身份管理就像 RDBMS,当你可以花合理的钱将非核心的繁重工作委派给专业人士时,为什么还要自建身份管理等基础设施呢?身份泄漏产生的成本可能高达数百万美元,你能否认身份安全没有价值吗?在评估购买身份管理服务的投资回报率时,请考虑这些因素。

3、复杂性

你的产品在前期肯定是简单的,但是,一旦你的产品成功推向市场,你开始需要支持更广泛的身份提供商。你可能还有合作伙伴,你可能还会推出移动 APP 和 API 让其他人调用,这样你的受众群体才能扩大。如果你在欧洲,你还会面临 GDPR 的监管(中国也即将出台相关法律)。这时身份管理开始变的复杂,维护自己的身份管理系统成本会比你预期要高的多。

4、测验

上面的几个问题可能已经引发了你的思考。有些你可能不在意,有些你可能在工作中已经遇到。但是,我们邀请你根据目前的状态和未来几个月或几年的发展方向回答以下 20 个问题并切实考虑它们。

1)用户相关的问题

  1. 你是否考虑过如何实现「用户管理」?是自助管理还是集中管理?用户体验会是什么样?
  2. 你有用户使用多个「身份提供商」登录你的应用吗?你如何判定他们是一个人?
  3. 你是否有多个服务或软件需要认证?如果有,他们使用了同一个技术栈还是多个技术栈?(不同的技术栈会加大研发成本)
  4. 你是否需要统计信息来查看用户的增长情况、设备情况、IP 地理位置和认证情况?如果需要,你计划如何收集、分析和可视化这些数据?
  5. 你如何记录并解决用户身份认证过程中出现的异常事件(忘记密码、无法登录、认证失败、过期等)?

2)应用服务相关的问题

  1. 你如何在漏洞被曝出之前及时发现漏洞?发现漏洞后如何通过补丁快速修复漏洞?
  2. 你如何处理在不同「身份提供商」之间认证时产生的「标准不兼容」问题?当这些身份提供商之间都使用了不同的技术栈之后,你将作何处理?
  3. 你的 DevOps 团队能否在开发身份认证基础设施上保持专业、领先地位和最佳实践?
  4. 你有 MFA(多因素认证)策略吗?你打算怎么跨平台的实现 MFA?你是否希望你的用户能在 iOS 或 Android 设备上使用 FaceID 或指纹来进行身份认证?
  5. 你是否考虑过用户存储的可伸缩性、性能、查询和可用性要求?在流量过大的情况下你如何保证登录系统的 99.999% 可用?

3)身份提供商(IDP)相关的问题

  1. 你在迁移老应用进更现代的身份管理系统时,如何让用户不重置密码无缝迁移?
  2. 你的一个 B2B 客户需要 SSO,你可以在内网中或防火墙后面与 Active Directory 做联合认证吗?
  3. 不同的 SAML IdP 有多种格式存储和传递声明 —— 你是否有一种简单的方法让声明完全自定义化?
  4. OpenID Connect 是流行的身份认证新标准:基于 REST / JSON 和 OAuth 2.0。但是其魔鬼般的实施细节,你计划如何在不同的后端语言和客户端之间实现它?

4)安全与合规问题

  1. 身份系统是黑客攻击的首要目标。你是否考虑过实施暴力保护?比如 API 网关上的 DDoS 预防和缓解?
  2. 你是否打算让第三方安全顾问来进行独立的渗透测试,代码审查和体系结构审查以验证安全性和最佳实践?
  3. 在身份实施过程中产生的安全漏洞报告你计划如何解决?
  4. 你是否需要上下文逐步身份认证(Contextual Step-up Authentication)?例如 IP 白名单或 Active Directory 成员身份?你是否需要多种密码加密算法?无密码身份认证对你的用户是否有效或存在意义?

5)时间与成本问题

  1. 你需要雇佣多少人,包括 IT,研发人员和外包服务(例如咨询专业知识)?这些人很难找到,雇用起来也很昂贵。你将从何处获得这些人才,费用是多少?
  2. 你预计的上线日期是什么时候?你的 IAM 解决方案需要多少时间和多少次迭代?
> Forrester Consulting 的研究报告指出,使用身份管理服务可以产生 548% 的投资回报率和 370 万美元的费用节省。

使用 Authing 可以一劳永逸的解决上述 20 个问题,任何想做计算机软件的企业或个人,只需要接入 Authing 的云服务,就可以以极低的成本,快速解决那些需要耗费数百万元人民币才能解决的问题。身份的复杂性和混乱性,造成了每年数十亿的浪费,因为其表面的简单,导致了缺乏系统的标准,每家厂商都会自己搞一套自己的标准,这些混乱的标准既养活了一群人,也加重了这群人的开发负担。

身份这件事,听上去是老故事,看上去很简单,但其从未得到很好的解决,这就是 Authing 存在的意义。

相关阅读

什么是 Authing?

Authing 提供专业的身份认证和授权服务。
我们为开发者和企业提供用以保证应用程序安全所需的认证模块,这让开发人员无需成为安全专家。
你可以将任意平台的应用接入到 Authing(无论是新开发的应用还是老应用都可以),同时你还可以自定义应用程序的登录方式(如:邮箱/密码、短信/验证码、扫码登录等)。
你可以根据你使用的技术,来选择我们的 SDK 或调用相关 API 来接入你的应用。当用户发起授权请求时,Authing 会帮助你认证他们的身份和返回必要的用户信息到你的应用中。

<div align=center>Authing 在应用交互中的位置</div>

欢迎关注 Authing 技术专栏

Authing 社区

推荐阅读
关注数
2
文章数
42
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息