昨晚在跟论坛坛友的对话中意识到了应该有不少人需要这个功能,所以写了分享一下。

这种方法要求网站必须是经过Cloudflare的,裸奔的大伙们想要用这个功能的话就得好好考虑是否要用Cloudflare了🤔
Zero Trust不得不说真是神器,以后也还要多多探索一下Zero Trust的更多玩法😋


正题

首先进入Cloudflare Zero Trust控制台,选择侧边栏中的Access,进入Applications子页面。

image

点击Add an application按钮,类型选择Self-hosted,进入Configure application页面。

Configure application

image

以图中为例,Application name可以是自己喜欢的任意名字,Session Duration则可以理解为这一次身份认证的有效期。Application domain按自己的实际需求来填。如果你想要只对某个页面使用Access的话,就填上要保护的页面的路径即可。
这里我以我自己的测试页面为例。
在Application Appearance这一栏中开启Enable App in App Launcher开关,开关下方的域名一般选择Use default。Application logo可以选择Custom,需要的话可以在按钮点选之后的Custom application logo中填入想要自定义的图标链接。

image

页面下方的Block pages用于设置验证失败之后的提示页,Identity providers在你没有设置其他认证方式的时候保持默认即可。认证方式默认情况下只有 One-time PIN 这一种,这些对于大多数用途来说都足够了。你也可以在Zero Trust中的Setting-Login methods添加其他验证方式,这些都可以按需设置。
点击Next,进入Add policies页面,这是最重要的一步了。

Add policies

image

Policy name填你自己喜欢的任意名字,Action一般是保持默认的Allow,Session time保持Same as the session timeout即可。
策略类型中Allow可以简单理解为白名单,即符合该策略规则的用户可以通过,而Block则为黑名单规则相反,此外还有Bypass和Service Auth。

image

接下来在Config rules中配置自己需要的身份认证规则。规则类型中Include类规则可以理解为白名单,而Exclude则相反。规则匹配也可以使用邮箱后缀、IP、按国家验证等等。
以图中为例,如果想要用你的邮箱来验证的话,在Include类规则中选择Email,Value输入你的邮箱,可以添加多条规则。注意:这里如果填入邮箱的话一定要全部填小写,我就在这里踩过坑🤧
下方的Addtional settings中可以设置申请临时身份验证,如果不需要可以留空。这一点就不多说了,有需要的大伙可以自行设置。
点击Next,进入Setup页面。Setup页面还提供了跨域、Cookie 等配置,其中设置对大多数用途来说都可以保持默认,可以直接点击右下角Add application即可,有需要也可以自行设置。

大功告成!

如果没有意外,点击Add application之后会提示Application successfully configured,这时等待几分钟再访问要保护的页面,就可以发现已经生效:

image

输入先前在Include中设置的邮箱,如果在没有设置过其他Identity providers而是保持默认的话,邮箱中此时就已经发来了验证邮件。

image

你可以选择复制验证码到刚刚的验证页面,也可以选择点击邮件链接直接登录。