聊聊一个差点被放弃的项目以及近期的开源计划

· 浏览次数 : 0

小编点评

## IdentityServerLite 项目总结 **前言:** 自从 StarBlog 和 SiteDirectory 之后,我还没写新的关于开源项目的系列,最近又积累了很多想法,正好写一篇博客来总结一下。 **单点认证项目:** 最近在做单点认证项目时,遇到了以下困难: * **C# 生态的单点认证项目很少,开源的项目也比较完善,我最终选择了开发自己的项目。** * **IdentityServer4 代码复杂,需要二次开发,增加我们需要的功能,成本不低。** * **其他技术栈也尝试过,但都无法满足我需求。** **最终选择:** 在放弃之前,我重新思考了项目,最终决定自己开发单点认证系统。 **技术选型:** * **后端:** AspNetCore * **前端:** Next.js, Tailwind CSS, AntDesign * **中间件:** MediatR, AutoMapper **其他想法:** * 实现一个去中心化的博客聚合平台 * 支持用户注册,创建相册,关联应用 * 加入 AI 功能,对图片进行描述、识别图片的人类、对图片自动分类 * 优化存储空间 **结论:** IdentityServerLite 项目差点被我放弃,但我坚持下来并最终完成了开发。项目的技术选型和初版完成,希望能为未来的开源项目提供参考。

正文

前言

自从 StarBlog 和 SiteDirectory 之后,我还没写新的关于开源项目的系列,最近又积累了很多想法,正好写一篇博客来总结一下。

关于差点被放弃的项目,就是最近一直在做的单点认证(IdentityServerLite)

IdentityServerLite

开发这个项目的起因,是团队的内部系统逐渐多了起来

实际上之前也有一个“单点认证”,不过非常简陋,甚至没有应用管理功能,多个系统都共用相同的 token ,然后在每个系统里去判断用户权限,非常不优雅也不安全。

去年底就开始计划这个单点认证项目

起初做了一些技术选型和调研,本来打算在 C# 生态里选择的,不过 C# 生态里的单点认证项目实在是少,开源的比较完善的也就 IdentityServer4 了,但这个项目已经停在了 .Net6 版本,现在这个团队已经转向商业版的开发。

IdentityServer4 我试用了一段时间,感觉功能很完善很重,不过实在是复杂,要在此基础上二次开发,增加我们需要的功能,成本不低。

接着又看了同样是 C# 生态新出的 OpenIddict ,这个相比起 Ids4 更像是一个实现了 OpenID Connect 协议的库,而不是一套单点认证方案。

既然 C# 生态不行,那我又把目光转向了其他技术栈,试用了基于 go 的 casdoor 和基于 Java 的 Keycloak ,感觉都不太符合,前者的代码有点乱,而且用起来发现有一些 bug ,要在此基础上开发的话心好累;后者还是那个问题,太复杂。

就这样,我最终打算自己开发了,接下来我花时间把 OAuth2.0 和 OpenID Connect 学了一下,又看了 IdentityServer 的部分代码,然后就在此基础上开始了单点认证项目的开发,在当时,我把这个项目命名为 IdentityServerLite,顾名思义就是轻量级的 IdentityServer

相关的技术栈是:

  • 后端 - AspNetCore, MediatR, AutoMapper, RateLimit 等(可能还有一些一时想不起来的技术,后面有空会单独写文章介绍这个项目)
  • 前端 - Next.js, Tailwind CSS, AntDesign

当开始开发之后,才发现困难重重,单点认证系统远比我想象的复杂,当然这跟我在当时对 OAuth2.0 的理解不足也有关系,而且还要接入多种外部登录方式,也给项目带来了额外的复杂性。

所以说这个项目差点就被我放弃了,我差点就想转而使用现成的单点认证方案了,不过好在后面坚持下来,并把这个项目完成了,不过代码也写得很乱就是了。

后面我会找时间重构一下,并作为开源项目发布,新的名字我也想好了,延续 StarBlog 的风格,就叫 StarSSO 好了~

扩展

另外,我后面又发现了基于 C# 的还有另一个单点认证项目,以及其他生态的项目,这里列举一下:

一些其他想法

接下来是一些其他的想法,后续有时间就会付诸实践

  • EchoSubs - 视频字幕识别、翻译服务
  • SnapMix - 随机图片接口服务
  • AIHub 2.0 - AIHub 的升级版
  • StarBlogHub - 实现一个去中心化的博客聚合平台,不同的个人博客都可以接入,共享流量

EchoSubs

之前用过一个自动对视频提取字幕并翻译的工具,是基于 OpenAI 的 whisper 模型实现的,感觉还不错,这对于看生肉(没有翻译的番剧)和网课很有用,不过那个工具是使用 PyQT 做的,并不能实现自动化操作

我想做一个服务,提供接口,用户把音频上传到 OSS,然后在 celery 里创建个任务,使用 whisper 模型去语音转文字(刚好有空闲的硬件可以用),接着再调用接口翻译。

目前已经完成了核心的 whisper 字幕识别和翻译部分,接下来写个接口,再加入 celery 和 OSS 就完事了。

SnapMix

这个是随机图片接口服务

我的 StarBlog 之前就有这个功能

不过我想博客还是更纯粹一点好

而且我想把这个随机图片的功能做得更丰富一些

比如可以支持用户注册,然后每个用户可以创建不同的相册,和不同的应用;

每个应用可以关联多个相册,这些相册有系统里公开的共享相册,也有自己的私有相册;

然后使用的时候,根据 appid 和 secret 去请求随机图片就好了

而且我还打算加入 AI 功能,可以用多模态模型对图片进行描述、识别图片的人类、对图片自动分类;

检查相似的图片,优化存储空间等。

PS:事实上最后的相似图片查找,我去年就用 C# 实现了,使用了比较简单的感知哈希和直方图方法,并且我当时是打算使用 Avalonia 来做 GUI ,不过后续搁置了,类 WPF 的开发还是难了点,后续我用 Blazor Hybrid 来做吧~

目前这个项目的技术选型,以及初版已经完成(毕竟 StarBlog 里就有这些功能)

一开始分别用 go、python、C# 都实现了一版,最后发现还是 C# 的性能高一些。

小结

其他的项目不想赘述太多了

毕竟都还没开始做

就水到这吧~ hhh

与聊聊一个差点被放弃的项目以及近期的开源计划相似的内容:

聊聊一个差点被放弃的项目以及近期的开源计划

前言 自从 StarBlog 和 SiteDirectory 之后,我还没写新的关于开源项目的系列,最近又积累了很多想法,正好写一篇博客来总结一下。 关于差点被放弃的项目,就是最近一直在做的单点认证(IdentityServerLite) IdentityServerLite 开发这个项目的起因,是

上周热点回顾(5.20-5.26)

热点随笔: · 开源低代码框架 ReZero API 正式版本发布 ,界面操作直接生成API (阿妮亚)· 【阿里云X博客园】参与征文赢面试绿通资格!还有特别福利哦! (博客园团队)· 聊聊一个差点被放弃的项目以及近期的开源计划 (程序设计实验室)· OpenAI“杀疯了”,GPT–4o模型保姆级使

在这个大环境下我是如何找工作的

![](https://s2.loli.net/2023/06/19/SQP9LxtXNhGwyev.png) 蛮久没更新了,本次我想聊聊找工作的事情,相信大家都能感受到从去年开始到现在市场是一天比一天差,特别是在我们互联网 IT 行业。 已经过了 18 年之前的高速发展的红利期,能做的互联网应用几

第一次线上 OOM 事故,竟和 where 1 = 1 有关

这篇文章,聊聊一个大家经常使用的编程模式 :Mybatis +「where 1 = 1 」。 笔者人生第一次重大的线上事故 ,就是和使用了类似的编程模式 相关,所以印象极其深刻。 这几天在调试一段业务代码时,又遇到类似的问题,所以笔者觉得非常要必要和大家絮叨絮叨。 1 OOM 事故 笔者曾服务一家电

流式响应Web小工具实践

作为一位拥有多年经验的老程序员,我对于提升Web应用性能和用户体验有些兴趣。今天,我要和大家聊聊一个非常实用的技术——流式响应(Streaming Response)。 首先,流式响应到底是什么呢?简单来说,它允许服务器将数据逐步发送给客户端,而不是等到所有数据都准备好后再一次性发送。这种方式非常适

聊聊Flink的必知必会(一)

Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

聊聊FASTER和进程内混合缓存

最近有一个朋友问我这样一个问题: 我的业务依赖一些数据,因为数据库访问慢,我把它放在Redis里面,不过还是太慢了,有什么其它的方案吗? 其实这个问题比较简单的是吧?Redis其实属于网络存储,我对照下面的这个表格,可以很容易的得出结论,既然网络存储的速度慢,那我们就可以使用内存RAM存储,把放Re

聊聊Flink必知必会(二)

### Checkpoint与Barrier Flink是一个有状态的流处理框架,因此需要对状态做持久化,Flink定期保存状态数据到存储空间上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoint机制。而Checkpoint为Flink提供了Exactly-Once的投递保障。 流处理

聊聊Hugging Face

## 概述 HuggingFace是一个开源社区,提供了开源的AI研发框架、工具集、可在线加载的数据集仓库和预训练模型仓库。HuggingFace提出了一套可以依照的标准研发流程,按照该框架实施工程,能够在一定程度上规避开发混乱、开发人员水平不一致的问题,降低了项目实施的风险及项目和研发人员的耦合度

聊聊自然语言处理NLP

## 概述 自然语言处理(NLP)的正式定义:是一个使用计算机科学、人工智能(AI)和形式语言学概念来分析自然语言的研究领域。不太正式的定义表明:它是一组工具,用于从自然语言源(如web页面和文本文档)获取有意义和有用的信息。NLP工具的实现一般是基于机器学习与深度学习、其它算法(Lucene Co