什么是 App Launcher
所谓 App launcher,就是当用户登录之后,会显示一些应用,可以直接点击跳转过去。再也不用单独收藏每一个链接啦,只要收藏这个 App Launcher 即可。长这样
添加新登录验证方式
通常来讲,我们是通过邮件的方式来进行验证的。非常简单,但是有时邮件可能会发送失败,比如说被 Gmail 拦截。那么有没有办法添加新的验证方式呢?答案当然是有的啦。Cloudflare 继承了非常多的登录方式,如下图所示,甚至有一个通用的 SAML:
下面就以配置 GitHub 登录来说,Google 等同理基本没太大差别。
创建 GitHub App
打开 GitHub,进入 Settings – Developer Settings – OAuth Apps,新建一个 app
- Application name:随便写,自己记得就可以
- Homepage URL: 你的 team url,比如说 https://bennythink.cloudflareaccess.com/
- Callback:同上,https://bennythink.cloudflareaccess.com/cdn-cgi/access/callback
创建之后,复制 Client ID,然后点击 Generate a new client secret 复制 secret 的值
创建 GitHub Organization
创建一个 GitHub Organization,后续做验证的时候要用这个。
配置 Zero Trust
回到 Cloudflare Zero Trust,选择 Settings – Authentication – Login Methods,右侧有一个 Add new,然后选择 GitHub
填入刚刚复制的 ID 和 secret,点击保存
下面会弹出一个小的框框
点击 finish setup 或者复制链接到新窗口打开,在 org 中给我们新创建的 org 授权,点击 Grant,然后 authorize
此时回到 Login Methods 就可以看到已经添加成功啦,点击 Test 按钮可以看下 Cloudflare 从 GitHub 的 API 拿到的数据
配置验证
此时如果你打开 team url,比如 https://bennythink.cloudflareaccess.com/ 在 Login 就已经能看到 GitHub 了。
当然这还没完,不能所有人都能通过 GitHub OAuth 进入 App Launcher 呀!因此我们还需要进一步配置
点开 Zero Trust – Settings – App Launcher – Manage
首先确认一下 Authentication 页面已经选中了 GitHub,默认应该是所有认证方式都可以,当然你也可以自定义
然后在 Rules 中,新建或者编辑已有规则,我们会发现有三种可以选择的模式: include、require 和 exclude
- include:类似逻辑 OR 操作符,用户只要满足条件之一就可以
- require:类似逻辑 AND 操作符,用户要满足所有的条件
- exclude:类似逻辑 NOT,排除条件
这里我们的需求是,用户要么通过 dmesg.app 的邮箱验证,要么在新创建的那个 Organization 里,所以新添加一个 include,Selector 选择 GitHub Organization,organization name 写创建的 name
如果我们的需求是,用户在 org 里,并且邮箱为 [email protected],那么就要一个 include 邮箱规则,一个 require GitHub organization 规则。
返回 team url 就可以登录了。
注意:配置 App Launcher 的权限,并不等于拥有应用的权限,应用的权限是独立的。
举个例子,我之前创建的 redis,只能邮箱进行验证,并且放到了 launcher 之中,那么在 App Launcher 这里我通过 GitHub OAuth 后,并看不到那个 redis。想要看到对应的应用,那只能去编辑对应应用的规则。
Access Group
把一样的规则配置多次就显得很蠢,这个时候就要用 Access Group。
Access – Access Group,设置名称和配置和前面一样
在其他地方,添加策略的时候选择这个 Group 就可以了。甚至在 WARP 的 Device enrollment permissions 中也可以这样搞!
参考文档
https://developers.cloudflare.com/cloudflare-one/policies/access/