Render部署的服务想要鉴权,接入Cloudflare Access踩坑记录

一、背景 在Render上面部署了一个自己的服务,仅用于自己使用,想要鉴权一下才能使用,方案有: 自己在代码中开发鉴权功能 使用Nginx Basic Auth或者Cloudflare Access等 这个场景对于我来说,明显用Access更好,不用改代码,不用维护一堆鉴权的bug和安全风险,而且也...
Render部署的服务想要鉴权,接入Cloudflare Access踩坑记录
Render部署的服务想要鉴权,接入Cloudflare Access踩坑记录

一、背景

Render上面部署了一个自己的服务,仅用于自己使用,想要鉴权一下才能使用,方案有:

  1. 自己在代码中开发鉴权功能
  2. 使用Nginx Basic Auth或者Cloudflare Access等

这个场景对于我来说,明显用Access更好,不用改代码,不用维护一堆鉴权的bug和安全风险,而且也不用自己部署Nginx之类的,直接踩一踩Cloudflare配置的坑就行了。

效果如下,访问的时候直接进入验证页,输入白名单里面的邮箱,cf会发送临时验证码,不在白名单的邮箱,不会发送验证码

图片

Access的额度:

Cloudflare Docs

Account limits

Reference information for Account limits in Cloudflare One.

图片

二、具体流程

2.1.免费域名

不能使用Render提供的对外访问域名,因为想要Access必须得域名托管cf代理,并且不能A帐号在cf配置了一个域名,B帐号使用这个域名配置Access。

所以这里得有个自己的域名,我用的是免费域名:https://dash.domain.digitalplat.org/registration

注册的时候信息随便填,包括手机号,地址随便打abc都行,邮箱填对就行了

2.2.域名托管cf

https://dash.cloudflare.com 这里添加一个域名,然后得到dns解析地址,填到
免费域名服务商那里,这个教程太多了,就不在这里展开。

2.3.在Render验证免费域名

  1. 在 Seetings的Custom Domains里面先关闭 Render Subdomain
  2. 添加免费域名进去,这时候需要验证
    图片
  3. 在cf中添加解析记录,1~4这个地方得填对,不要开启dns代理,需要填入两个CNAME的记录,然后回到Render验证通过
    图片
  4. Render那边验证通过后,修改记录,改为开启代理
    图片

2.3.开启Access

  1. 点击Zero Trust
    图片
  2. 点击应用程序
    图片
  3. 新建应用程序,选择自托管
    图片
  4. 域选择免费域名,其他留空
    图片
  5. 创建一个策略,这里示例只能某些邮件登陆的策略,然后点击保存
    图片
  6. 身份认证选择onetimepin
    图片
  7. 点击保存,这样就算开启了
  8. 使用curl一下免费域名,如果出现302,则成功了,如果显示200,证明没有被Access托管
    curl -I https://xxxxx.qzz.io                                                                                      
    HTTP/2 302
    

三、Access的日志

图片


图片

四、踩过的坑

一直没有被Access托管,访问免费域名直接就进入首页了,叫codex查了一下是得CNAME验证才行。

我之前CNAME验证失败了,就是因为打开了cf的DNS代理,所以我改为A记录验证通过,但是Render那边不支持A记录被Access托管。。。

图片

图片

1 个帖子 - 1 位参与者

阅读完整话题

来源: linux.do查看原文