如何关闭 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。
GET accounts/:identifier/access/apps
官方示例:
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
。
{
"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。
DELETE accounts/:identifier/access/apps/:uuid
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!
如果返回了其他的结果,请根据返回的结果中的提示,修改你请求中的参数。
{
"result": {
"id": "ffffffff-1145-1419-1981-ffffffff"
},
"success": true,
"errors": [],
"messages": []
}