IdentityServer 的卖点在哪里?
共 1591字,需浏览 4分钟
·
2022-03-24 21:34
IdentityServer 是一组服务和中间件,寄宿在 ASP.NET Core 应用里就能成为一个认证服务器。好的实践是将它做为独立的实体进行托管。只需要分钟到小时级别的时间投入,你就能拥有一个处于运行态的服务器,拥有 OAuth 2.0 和 OpenID Connect 协议能力,可以为各种不同的应用,甚至物联网来做单点登录。
首次体验 IdentityServer,是在上上次:
在那篇文章里,对比了 Authing、Keycloak 以及 IdentityServer,从易用性上讲,首推 Authing;从免费角度来看,首推 Keycloak。只对特别能折腾的人和特别在意安全性的情况下推荐 IdentityServer。
首先,IdentityServer 不像 Keycloak,它并不免费,需要购买许可证才能使用;其次,它也不像 Authing,除了 API、SDK 等还提供现成的后台管理 UI。它基本上只是一组 API,当然你可以再另行寻找开源的 IdentityServer UI,或者另外购买它的官网推荐的 Admin UI。最后,它也不像 Keycloak 和 Authing 可以单独部署,它只是一个中间件,需要在可部署的独立应用项目中引入它做为一个依赖项再部署,并且这个宿主应用还必须是 ASP.NET 或者 ASP.NET Core 项目。
支持开放的标准的 OAuth 2.0 或者 OIDC 协议的免费开源方案多如牛毛,那么收费的 IdentityServer 到底有什么卖点呢?
这很令人困惑。
从网上的资料上看,有这样以下的卖点:
当前的 OAuth 2.0 被应用得过于普遍,在某些高安全性的场景,IdentityServer 可以满足到这些需求。
比如金融行业、健康医疗、电子商务、电子化政府等等,需要更高的安全性,这也是为什么 IETF(BCPs)和 OpenID Foundation(FAPI)开始更新原来的规格说明书和威胁模型。
IdentityServer 允许完全自主控制 UI、UX、业务逻辑和数据。
不像基于 Keycloak 做二次开发,这简直就是基于 IdentityServer 的 API 完全从头开发。尽管对某些团队和个人来说,这可能是个缺点,但对于有开发能力需要完全控制 UI、UX、业务逻辑和数据的团队来说,的确是优点。
就像全家桶 CMS 在某些团队里并不受欢迎,而所谓的无头 CMS 系统更加适合这些团队一样。有的时候,开箱即用是优点,但有些时候,开箱即用并不好。(我个人也同意这一点)
另外,之前说的它得寄宿于一个 ASP.NET 技术栈的这个缺点,在 IdentityServer 自己看来,也是优点。因为在 IdentityServer 看来,C# 是最好的 DSL —— 而且它警告,不要去尝试用 XML、YAML 或者其他编程语言!(这一点其实我也认同的,C# 的确太棒了,我甚至愿意承认,甚至要比 JavaScript 还优秀)
这一点,其实不仅只有它满足,但是它拿到了 OpenID Foundation 的官方认证!
亲测有效,点点鼠标就部署了一个:https://id6.azurewebsites.net/。
尽管许可证收费,但是代码都是公开在 GitHub 上的,而且接受 PR 。但是这也和开箱即用的特点一样,在某些产品中被宣传为优点,但在另外的产品里,却反而是缺点。比如 Authing 就认为开源也可能是一些问题的根源,比如反而更容易有安全隐患等,但这个,没有定论吧,还是看具体产品。在 IdentityServer 这里,开源就是优点。