Introduction
由于个人习惯,网盘,知识库,Jenkins,Git 服务器啥的都是自己搭建自己用,而某些服务的使用频率实在是太低了……低到我几乎每次使用都要重置下密码(
因此就一直在考虑搭建自己的统一认证服务……
既然是给自己用的,那必然是越简单越好,也就是说:
无高并发需求
最好别用外部数据库(没必要
只用一个实例实现(穷,只有一台机器
最后选择了 Keycloak 用来搭建个人单点登录服务。
为啥是 Keycloak?
其实是考虑过用其他服务搭建单点登录的,然而……
Apereo CAS 的安装文档我没看懂(不会 WAR Overlay method),以及对个人来说貌似过于复杂了
Shibboleth IdP 同上,甚至更加复杂
使用 Github/Microsoft 等提供的社交登录我需要创建一大堆 Oauth APP(域名不同
而相比之下,Keycloak能够满足我的绝大多数需求:
支持社交登录(套娃开始
能用的 Web UI
自带数据库(虽然不建议用,但应付我这种个人认证大概没问题
Oauth2 以及 saml 支持
目前的我自建的服务大多都支持 Oauth2 或者 saml,不支持的产品可以通过 oauth2-proxy 解决,基本上能满足个人需要。
安装 Keycloak
keycloak 的安装过程并不难,可以参考这篇文章以及官方文档(请点击查看原文以查看超链接)
创建一个新域 (Add Realm)
使用 Master 域是很愚蠢的行为……所以还是单独开一个吧(点击 Add realm 添加新域
起一个正常的名字即可(
如果有需求,可以修改 Display name 和 HTML Display name 达到自定义显示的效果。
在 Login 选项中的个人配置如下:
关闭忘记密码
打开验证邮箱
打开使用邮箱登录
修改 Security Defenses:
打开Brute Force Detection防止被爆破
关闭Permanent Lockout
设置以下数据:
Max Login Failures
Minimum Quick Login Wait
Max Wait
Failure Reset Time
前往 Authentication 中 Flows,下拉栏选 First Broker Login,将以下两个流程改为 Disabled,以防止可能出现的通过第三方账号注册:
Create User If Unique
Confirm Link Existing Account
至此,Keycloak 部分基本配置完毕。接下来要去配置更麻烦的客户端啦
创建OpenID客户端(Client)
理论上这部分的配置应该根据客户端本身来修改,在此只能保证此部分的步骤适用于大多数客户端(比如后面的 WordPress 和 Dokuwiki)
前往配置中的 Clients 界面,点击 Create 创建一个新的客户端
想一个好记的客户端的 ID(比如说 herry_wordpress )后点击Save即可。(建议全小写以防止可能出现的问题)
修改 Access Type 为 confidential
下方的 Valid Redirect URIs 填入客户端 Web 地址+ *,比如本博客就是https://blog.herry001.com/*
点击保存(Save)。
接下来前往 Credentials,复制下 Secret。(可以之后再复制
至此一般的客户端配置已完成。
配置 Wordpress,Dokuwiki 和 Oauth2-Proxy的方法在原文中……请点击阅读原文以查看。