什么是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,排除条件
添加require规则的时候要注意,是要满足所有条件才可以授权。比如我的require规则添加了两条,分别是County=China & Country=US,那么没人可以通过,因为IP只能在一个国家而不是两个国家。
这里我们的需求是,用户要么通过 dmesg.app 的邮箱验证,要么在新创建的那个Organization里,所以新添加一个include,Selector选择GitHub Organization,organization name写创建的name
如果我们的需求是,用户在org里,并且邮箱为 xxx@xxx.com,那么就要一个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/