基于LDAP实现Oauth2授权平台1-起点

之前的产品,使用的是自有协议进行统一的用户认证和管理,这样的好处是自有平台之间比较方便,随着需求的增多,渐渐发现需要对接第三方各种应用的时候,劣势就开始出现了.

现在比较流行的授权方式大概分为一下两种:

  1. ldap,ad 这类古老成熟的目录服务
  2. openid,oauth,cas... 这类web时代的衍生产物

早些时候,想的是,基于现在的自有用户中心,构建一个基于数据库的ldap代理,将数据库的用户信息,转换为ldap协议提供给需要的应用

经过长久的观察,此轮子确实有点前无古人,加上c#也没有ldapserver 相关的实现方案,所以导致可行性极低,故放弃了这个方案.

经过对现在市面上的一些现有产品的研究(FreeIPA,Dexidp,KeyCloak), 总体来说,

  1. FreeIPA 这个方案算是我感觉最成熟,功能最强大的一个,但是部署过程真的让人崩溃,而且复杂不容易吃透.
  2. Dexidp 过于轻量,单纯的提供了基本的协议支持,管理完全缺失
  3. KyeCloak 这个总体来说 是这几个里面给我感觉最好的

不过,所有的这些,都有一个通病,就是UI真的真的真的,不能说难看吧.不符合我的审美. 对于一个看脸的码农来说,改造成本有些麻烦,加上目前java不再作为主力语言,所以,最终还是决定,自己来实现一个这样的平台.

愿景

  1. 支持古老的 LDAP 协议进行认证.
  2. 支持OpenID Connect 进行认证授权
  3. 支持 CAS, SAML2 协议 (第一个正式版不会支持这两个)
  4. !有一个美美的管理平台

综上所述,最终选定使用.net 5 的 IdentityServer4 + Ldap 实现整个平台,这样基础用户信息使用LDAP存储,.net操作LDAP实现用户的管理,以及登陆等操作.

页面部分,基础的登陆/退出/找回密码/授权/错误页面,使用asp.net 的模版进行实现, 用户/群组的管理方面,使用Angular进行实现.

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注