Outline整合KeyCloak的OIDC登录

前面几篇文章讲到了《Docker Compose安装Keycloak》、《Keycloak使用群晖Synology Directory Server作为AD/LDAP用户数据源》,我们已经实现了KeyCloak的安装和与群晖NAS的整合,那么接下来我们需要用这个AD的用户数据源为一系列服务提供账号登陆支持。Gitlab已经讲过了,那么接下来可以试一下Outline。 Outline是一个比较新的,类似Notion的在线记事本,我前面也讲了如何快速部署Outline。但之前是用了Azure Active Directory,在手机的EDGE浏览器登录的时候,非要拉起微软自己的APP,华为手机还不支持。所以我们现在要干掉Azure Active Directory,改为自己的群晖AD用户。 1、KeyCloak中创建新的Realm 首先,我建议是单独创建一个realm,不要使用KeyCloak默认的master,好处是可以做到用户数据和应用的隔离,保证KeyCloak的安全性。 登录KeyCloak的后台,左上角有个下拉,默认是master,点击下拉菜单,然后点击『Create…

Keycloak使用群晖Synology Directory Server作为AD/LDAP用户数据源

这又是keycloak的另外一个大坑。keycloak并不会自动创建一系列SSL证书相关的配置,都要自己手撸。 如果还没安装keycloak,可以参考前一篇文章『Docker Compose安装Keycloak』 然后,你的群晖要先把AD配置好,这里就不重复了。 1、获得群晖AD对应的SSL证书 首先,要把群晖为AD所生产的自签名SSL证书下载回来,后面需要用。 位置:群晖DSM管理后台-控制面板-安全性-证书。如果不太确定是哪张证书,可以点击『设置』,找到『Synology Directory Server』对应的证书下拉。 在对应的证书上点击右键,选择『导出证书』 导出的证书解压后有两个文件,一个是证书本身cert.pem,另外一个是证书的私钥privkey.pem,我们需要用到的是cert.pem OK,基础数据准备好,我们开始干活。 2、为keycloak生成Java所需要用的keystore文件 这里有个大坑。虽然新版本的Java建议出于更高的安全性考虑,keystore应该使用PKCS12格式,keytool也是默认创建PKCS12格式的keysto…

Docker Compose安装Keycloak

Keycloak的安装其实挺烦人的,相关文章并不多,参考也不多,很多例子都是旧版本的,随手记录下安装和配置信息吧。 使用的数据库是postgresql,假设已经有安装好的postgresql,并且默认管理员账号是postgres,那么我们先创建keycloak的用户 su - postgres # 我们创建一个名为keycloak的pgsql用户,和名为keycloak的数据库 createuser -s -P keycloak createdb keycloak -O keycloak 然后我们创建一个文件,docker-compose.yml version: "3" services: keycloak: image: quay.io/keycloak/keycloak:20.0 container_name: keycloak environment: KC_HOSTNAME: <域名,如sso.naizhao.com> KC_HTTP_PORT: <监听的http端口,…

Gitlab整合群晖Synology Active Directory

群晖自己的文章并没有相关的帮助文档,网上也搜不到,这里留下来做个备份吧。 1、群晖先创建AD域 这里假定你设置的域名是wu.work,NetBIOS是wu,域管理员账号是ad-admin。大概类似截图中的样子 域管理员账号是你创建AD时输入的,不是NAS的管理员账号,别搞错了! 2、编辑gitlab.rb 如果你是用docker-compose安装的,应该会在docker-compose.yml里面指定了config目录的volume,在config目录里面就可以找到gitlab.rb。如果你是其他方式安装,文件在/etc/gitlab。如果还是找不着,自己Google。 打开gitlab.rb文件,找到ldap部分,然后把下面的内容贴进去(自己根据情况修改) 注意空格和缩进,注意空格和缩进,注意空格和缩进!!! # LDAP gitlab_rails['ldap_enabled'] = true gitlab_rails['prevent_ldap_sign_in'] = false gitlab_rails[…

Cloudflare SSL验证一直卡在Pending Validation(TXT)

最近有两个域名DNS改到Cloudflare,SSL证书验证一直卡在 待验证(TXT) Pending Validation(TXT),禁用通用 SSL(Disable Universal SSL)也试了很多次,不管怎么搞也解决不了这个问题。 后来想到了一点,这两个域名都开启了DNSSEC,域名DNS转移到Cloudflare后,一直没更新DS记录。 解决方法是,在Cloudflare的DNS管理页面,开启DNSSEC,把DS记录在域名注册商后台更新,问题解决。…

使用Cloudflare Tunnel实现内网穿透,把服务器架在家里

Cloudflare Tunnel是Cloudflare零信任网络的一个产品,用于打通企业、员工、设备之间的边界,从而摒弃掉VPN之类的过时技术(其实也不是过时,只不过是相对来说安全性、可控性较差) 通过Cloudflare Tunnel,可以实现云与设备之间打通一条加密通道,这样Cloudflare的CDN就可以很方便的通过这条加密通道访问到部署在内网的服务,包括Web、SSH等。同时,还不用考虑电信、移动等ISP不提供固定IP地址、不能开放端口,甚至解决备案的问题。 而且,还免费。 所以,整套内网穿透的方案大致如下 前置条件 * 首先,你要有一个Cloudflare的账号,并且添加了所需要使用的域名,同时,开通Cloudflare Zero Trust。 * 本地内网有一台Linux服务器。CentOS、Ubuntu、Debian都无所谓,树莓派也没问题。Web网站正常跑,内网能正常访问。 安装Cloudflared Cloudflared是Cloudflare Tunnel的一个本地cli客户端,可以实现管理功能和守护程序。 macOS可以用homebre…

彻底干掉烦人的.DS_Store文件

macOS系统会持续在目录里面不断的生成.DS_Store文件,用来存储当前目录的一些个性化设置信息,但这真的很烦人,每次删掉后,又会自动重新创建。真不知道苹果的产品经理和工程师是怎么想的。 但在macOS新版本里头,提供了一个小脚本专门来处理这个问题。不但可以删掉.DS_Store,还可以针对某个文件夹专门设置规则,不再创建。这对我等开发人员来说,实在是太贴心了。 这个小脚本叫dot_clean,位置在/usr/sbin 比如要禁止某个目录创建.DS_Store,那么只需要在terminal里面运行 /usr/sbin/dot_clean -m '目录名' 比如要禁止Downloads目录及子目录 /usr/sbin/dot_clean -m ~/Downloads 这个命令还有另外一个功效,自动删掉已经创建的.DS_Store,实在是一了百了…