如何关闭 Cloudflare 的 Access policy (How to disable the Access policy of Cloudflare)

如何关闭 Cloudflare 的 Access policy (How to disable the Access policy of Cloudflare)

本文讲述如何在不绑定信用卡的情况下关闭 Cloudflare 的 Access policy。

This post describes that how to disable the Access policy of Cloudflare without credit card.

前言

最近使用在使用 Cloudflare Pages 部署静态网页的过程中,不小心开启了 Access-policy,导致访问部署项目的历史版本都需要经过验证,但想进入关闭 Access-policy 的页面,必须要先绑定了信用卡。

这次属实是被 Cloudflare 给恶心到了,还好找到了解决方法,也就是通过调用 API 的方式去关闭这个功能。

必要条件

  • 熟悉 HTTP 协议接口的使用
  • 熟悉 curl 的操作方式

操作流程

根据 Cloudflare API 的文档,获取List Access Applications

1
GET accounts/:identifier/access/apps

官方示例:

1
2
3
4
curl -X GET "https://api.cloudflare.com/client/v4/accounts/699d98642c564d2e855e9661899b7252/access/apps" \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"

对 API 请求数据很简单,X-Auth-Email 很明显是我们账户绑定的邮箱,但是 url 参数中的 identifier 与 X-Auth-Key 的值应该如何获得?

获取自己的 identifier

登录 Cloudflare 之后,我们可以在主页的 URL 后看到一个看上去像是 ID 的字符串(abcdef1145141919810abcdefabcdefa),没错,这个就是我们的identifier 。

获取自己的 X-Auth-Key

登录 Cloudflare 可在这个页面 https://dash.cloudflare.com/profile/api-tokens 的 Global API Key 选项中查看。

获取 Access policy 的 ID

有了自己账户的 identifier 与 X-Auth-Key 之后,就可以对上文提到的 API 发送请求了,以下是我开启 Access policy 后对该 API 发送请求的结果,我们可以得到 Access policy 的 ID ffffffff-1145-1419-1981-ffffffff

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
"result": [
{
"aud": "*",
"created_at": "*",
"domain": "****",
"id": "ffffffff-1145-1419-1981-ffffffff",
"name": "***** - Cloudflare Pages",
"policies": [
{
"created_at": "*",
"decision": "allow",
"exclude": [],
"id": "****",
"include": [
{
"email": {
"email": "*@*****.****"
}
}
],
// ...
}
],
"allowed_idps": [
"*-****-*****"
],
"auto_redirect_to_identity": false,
"session_duration": "24h",
"ssh_logging_enabled": false,
"uid": "****-****-*",
"updated_at": "",
"type": "self_hosted",
"app_launcher_visible": false
}
],
"success": true,
"errors": [],
"messages": []
}

关闭 Access policy

有了 Access policy 的 ID 之后,就可以使用删除 Access Application 的接口关闭 Access policy。Cloudflare 是使用 RESTful 规范设计的 API,删除接口的 URL 就是将上文提到的接口,将 GET 换成 DELETE,并在最后加上 ID。

1
DELETE accounts/:identifier/access/apps/:uuid
1
2
3
4
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/abcdef1145141919810abcdefabcdefa/access/apps/ffffffff-1145-1419-1981-ffffffff" \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"

发送 DELETE 请求后,返回结果类似以下的结果,状态码为 202 (Accepted),恭喜你,你已经成功关闭了这该死的 Access policy!

如果返回了其他的结果,请根据返回的结果中的提示,修改你请求中的参数。

1
2
3
4
5
6
7
8
{
"result": {
"id": "ffffffff-1145-1419-1981-ffffffff"
},
"success": true,
"errors": [],
"messages": []
}

参考资料

如何关闭 Cloudflare 的 Access policy (How to disable the Access policy of Cloudflare)

http://pinkchampagne17.github.io/blog/2021/11/03/如何关闭Cloudflare的Access-policy/

作者

PinkChampagne17

发布于

2021-11-03

更新于

2021-11-03

许可协议

 CC BY-NC-SA 4.0