用户认证Auth配置管理
操作场景
RDS Supabase应用支持多种认证登录方式,您可根据实际业务情况按需启用,方便管理用户注册、访问控制、身份验证提供商(IDP)、邮件模板等相关配置。
- 支持对接SMTP邮件服务器,实现用户邮箱注册邀请、登录验证、密码重置、邮箱变更等邮件通知与认证能力,且可以自定义邮件发送的主题和正文内容,方便精准控制认证流程。
- 支持对接GitHub代码托管平台,实现 SSO(Single Sign-On)单点免密登录功能。您只需登录GitHub账号,即可一键跳转访问Supabase应用服务,从而省去多账号维护管理的负担,提供了便捷的三方登录途径。
前提条件
- 如果需要对华为云上的资源进行精细管理,请使用统一身份认证服务(Identity and Access Management,简称IAM)创建IAM用户及用户组,并授权,以使得IAM用户获得具体的操作权限,更多操作,请参见通过IAM角色或策略授予使用RDS的权限。
- 登录账号需要具备授权项“rds:aiApplication:getAuth”、“rds:aiApplication:modifyAuth”、“rds:aiApplication:get”和“rds:aiApplication:list”。
- 完整的公网环境Auth认证功能,需要绑定弹性公网EIP,具体操作请参考绑定和解绑弹性公网IP。
- 如果只需要使用简单的邮箱登录功能(在Dashboard界面直接创建新用户,且不通过邮箱确认),可以只绑定DNAT网关地址。此时,无法使用邮件模板和邮件发送和确认功能,也无法使用Github认证功能。
- 如果只在内网环境使用Supabase,必须对接内网邮箱SMTP服务器,才能使用完整的邮件认证功能,此时无法使用Github认证功能。
- 需要正确配置安全组,设置出方向的访问规则,具体操作请参考管理应用安全组。
- 如需开启邮箱登录认证,请获取要对接的邮箱服务器信息,并开启SMTP相关配置。
- 如需开启GitHub登录认证,请在GitHub->Settings->Developer Settings页面,注册OAuth App,并获取OAuth相关配置信息。
注意事项
- 开启公网邮箱或GitHub登录认证功能,需要配置安全组在出方向上的访问规则,允许Supabase访问公网网络(邮箱地址/端口和GitHub地址/端口)。
- 修改Auth配置过程中,Supabase应用功能将不可用(进程会重启)。请在业务低峰期进行操作,避免对高峰期业务造成影响。
- 如需开启GitHub登录认证,请确保白名单“rds_feature_supportPostgreSQLSupabaseGitHubAuth”已开启。如果白名单未开启,GitHub提供商配置项将不展示,请联系华为工程师支撑处理。
- 更换绑定邮箱时,新老邮箱账号均会收到确认邮件,需要都确认后才能成功更换。
约束限制
- 如果应用已启用了邮箱或GitHub登录认证功能,请勿解除EIP绑定,请勿删除安全组规则,否则会导致邮件无法发送和接收、引发登录故障,从而造成注册和认证异常,影响业务正常使用。
- 使用过程中,请勿切换SSL配置,避免业务认证功能异常,造成业务损失。如需切换,请在业务低峰期或维护窗口操作。
- 如果应用切换了SSL配置(从关闭->开启或从开启->关闭),需手动更新访问控制的相关URL地址配置以及邮件模板地址,确保协议方式(http/https)相一致。
- 仅支持在AI应用开发平台管理界面上进行管理与配置,不能在Supabase Dashboard界面进行操作(包括SMTP对接、邮件模板等配置),否则会造成元数据不一致,可能导致认证功能不可用。
操作步骤
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 左侧导航栏中选择“AI应用开发平台”,进入AI应用开发平台管理界面。
- 在“AI应用开发平台”列表页面,选择指定的AI应用,单击应用名称,进入应用详情页面。
- 单击左侧导航栏中的“Auth配置”页签,进入用户认证Auth配置页面。 图1 RDS Supabase应用Auth配置
- 参考查看Auth完整配置步骤,进入用户认证Auth配置页面。 图2 RDS Supabase应用Auth配置(用户注册配置)
请结合业务实际场景,按需开启或关闭相关配置项。
表1 Supabase用户注册配置项说明 配置名称
功能说明
注意事项
允许新用户注册
控制新用户是否能注册到您的应用项目,如果关闭,系统将不允许新用户注册,所有新用户注册请求(包括邮箱、OAuth、匿名等)均被拒绝。
如果关闭,系统将不允许新用户注册,所有新用户注册请求(包括邮箱、OAuth、匿名等)均被拒绝,请谨慎操作。
允许匿名登录
控制是否允许匿名用户访问,仅凭从RDS管理控制台获取的API Key即可创建临时身份,无需供任何个人信息(邮箱、手机或密码),即可直接创建一个临时"游客"账号。
如果开启,匿名用户(游客身份)也可以访问Supabase应用服务,请谨慎操作。
- 开关操作完成后,会触发一个配置下发任务,请耐心等待任务完成,确保配置已在Supabase服务中生效。
- 参考查看Auth完整配置步骤,进入用户认证Auth配置页面。 图3 RDS Supabase应用Auth配置(访问控制配置)
请结合业务实际场景,按需修改相关参数控制项。
表2 Supabase访问控制配置项说明 配置名称
功能说明
填写示例
注意事项
项目前端地址
指向您的前端项目(网站)的访问地址。用于拼接邮件中的链接,用户单击后跳转到的页面。OAuth登录成功后、邮箱魔法链接验证后、密码重置后,用户浏览器被重定向到此URL。
http://10.10.10.20:8080
支持IP地址,也支持域名格式(要能被正确解析并正常访问)。
应用外部访问地址
Supabase应用服务的外部可达完整URL,用于所有涉及外部回调的场景,如OAuth登录、SSO、邮件链接跳转。
填写格式:
- 未开启SSL:http://{supbase_eip_address}:8443
- 已开启SSL:https://{supbase_eip_address}:8443
- 样例(未开启SSL):http://10.10.10.10:8443
- 样例(已开启SSL):https://10.10.10.10:8443
{supbase_eip_address}为Supabase绑定的EIP地址。
结尾不能带'/'符号。
重定向白名单
用于配置防止恶意攻击、防御重定向漏洞的URL白名单。格式为逗号分隔的URI列表,作为OAuth重定向场景下(第三方 OAuth 登录、单击邮箱验证链接、重置密码)浏览器链接中redirect_to参数的有效重定向目标白名单。
http://10.10.10.11:8080,http://10.10.10.12:8080
支持IP地址,也支持域名格式。
可配置多个URL地址,数量不超过10个。
支持通配符格式,如https://10.10.10.*:8443。
- 配置填写完成后,会触发一个配置下发任务,请耐心等待任务完成,确保配置已在Supabase服务中生效。
- 参考查看Auth完整配置步骤,进入用户认证Auth配置页面。 图4 RDS Supabase应用Auth配置(身份验证提供商)
- 打开“邮箱”卡片的开关,进入邮箱身份验证配置页面。 图5 RDS Supabase应用Auth配置(邮箱身份验证配置)
请结合业务实际场景,进行参数正确的配置。请仔细检查SMTP配置的正确性和网络连通性。
表3 Supabase邮箱认证配置项说明 配置名称
配置说明
填写示例
注意事项
启用外部邮箱登录
控制是否启用外部邮箱作为第三方认证IDP。启用后,无需输入Supabase用户密码,即可邮箱登录进行SSO认证跳转。
开启
需要绑定弹性公网EIP。
SMTP主机
邮箱服务器SMTP的主机地址。不需要包含协议类型及端口号。
- 10.10.10.10
- smtp.163.com
- IP格式仅支持IPV4地址。
- 域名格式要求为公网可解析域名。
SMTP端口
SMTP邮箱服务器的端口号。支持填写非SSL端口和SSL加密端口。
25
为了防止密码和邮件内容被窃听,强烈建议配置SSL加密端口,一般为465或587。
SMTP用户名
SMTP邮箱服务器的认证用户名。建议填写运维管理员的邮箱地址。
zhangsan@huawei.com
-
SMTP密码
SMTP邮箱服务器的认证密码。
-
非邮箱登录密码,而是SMTP配置中生成的授权码。
管理员邮箱
填写管理员邮箱地址。
zhangsan@huawei.com
通常情况下,该邮箱地址与SMTP用户名相同。
邮件发件人姓名
邮件发件人的显示名称,收件人会看到该名称。
zhangsan
-
邮箱自动确认
设置用户注册时是否可通过邮件自动确认(跳过验证步骤)。
开启,则跳过邮件验证确认环节,系统不会发送确认邮件到用户邮箱,用户无需点击链接,直接自动注册成功。
关闭
对于生产环境,请慎重开启,强烈建议关闭以确保注册邮箱真实有效。
邮件发件速率限制(秒)
限制同一个用户(或同一个IP地址)在多长时间内(单位:s)最多只能触发一次SMTP邮件发送。
60
默认60s。请根据实际业务场景,合理正确设置。
- 配置填写完成后,会触发一个配置下发任务,请耐心等待任务完成,确保配置已在Supabase服务中生效。
请确保用户注册配置中“允许新用户注册”功能已开启,否则系统将拦截新用户注册,导致GitHub新用户无法成功注册并登录。GitHub SSO登录注册成功后,可以按需关闭“允许新用户注册”功能,禁止其他用户注册。
- 登录GitHub官方网站,进入Settings->Developer Settings页面,注册一个新的OAuth App。关键配置如下,供参考:
表4 GitHub OAuth App 注册创建页配置项 配置项
配置说明
填写示例
注意事项
Application name
OAuth App应用的名称。
Supabase Baas App
建议填写您的网站名、软件名或公司名
Homepage URL
OAuth App应用的官方主页完整地址。
http://10.10.10.30:8080
建议填写您开发的应用或网站的线上主页完整地址。
Authorization callback URL(旧版)
Redirect URI(新版)
授权回调URL。GitHub验证用户登录成功后,GitHub会把一个临时授权码(Code)发送到这个URI,Supabase后端捕获该请求后,在后台完成用户的自动建号或登录流程,最后再把用户安全地重定向回您的项目前端网页(即项目前端URL地址)。
填写格式为:http(s)://{supbase_eip_address}:8443/auth/v1/callback
样例(未开启SSL):http://10.10.10.10:8443/auth/v1/callback
{supbase_eip_address}为Supabase绑定的EIP地址。
创建成功后,请获取Client ID、Client secrets信息,并妥善保管,避免泄露造成安全隐患。
- 参考查看Auth完整配置步骤,进入用户认证Auth配置页面。 图6 RDS Supabase应用Auth配置(身份验证提供商)
- 单击“GitHub”卡片的开关按钮,进入GitHub身份验证配置页面。 图7 RDS Supabase应用Auth配置(GitHub身份验证配置)
请结合业务实际场景,进行参数正确的配置。
表5 Supabase邮箱认证配置项说明 配置名称
功能说明
填写示例
注意事项
GitHub OAuth App 的 Client ID
应用的唯一身份标识。GitHub 用它来识别是哪一个应用在发起登录请求。
Ov45liywCeERZoCwLx0i
填写步骤一中获取的对应信息。
GitHub OAuth App 的 Client Secret
应用的签名凭证。在用户同意授权后,后端服务器需要同时携带 Code(临时授权码)和 Client Secret 向 GitHub 换取 Access Token(访问令牌)。
bb1946b54eccbcae0fd6d2745429************
填写步骤一中获取的对应信息。
授权回调地址
设置GitHub“同意授权”认证成功后浏览器重定向到Supabase应用的目标URI。
http://10.10.10.10:8443/auth/v1/callback
必须与GitHub OAuth应用配置中Authorization callback URL保持一致,精确设置为Supabase应用外网访问地址并追加/auth/v1/callback路径。
- 配置填写完成后,会触发一个配置下发任务,请耐心等待任务完成,确保配置已在Supabase服务中生效。
RDS Supabase应用内置英文版邮件模板(含主题和正文),默认情况下,邮箱认证过程会使用默认模板来生成邮件内容。如果预置模板不满足您的业务场景要求,您可以创建自定义的邮件模板文件(格式为HTML),再通过RDS Supabase Dashborad界面Storage存储功能,上传并托管该HTML邮件模板文件,供邮箱认证过程读取并使用。
- 准备自定义邮件内容模板HTML文件。可参考如下指导要求,按需进行模板文件创建。
表6 Supabase邮件内容模板生成指导 模板分类
功能说明
模板样例
邮箱确认邮件模板
用于注册邮箱验证(注册后发验证邮件,激活邮箱)。
文件名:
oauth_email_confirm_template.html
内容:
<h2>Confirm Your Email via Huawei Cloud RDS Supabase</h2> <p>Follow this link to confirm your user with Email:</p> <p><a href="{{ .ConfirmationURL }}">Confirm your email address</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>用户邀请邮件模板
用于管理员邀请用户注册,发送邀请链接。
文件名:
oauth_email_invite_template.html
内容:
<h2>You have been invited via Huawei Cloud RDS Supabase</h2> <p>You have been invited to create a user on <a href="{{ .SiteURL }}">{{ .SiteURL }}</a>. Follow this link to accept the invite:</p> <p><a href="{{ .ConfirmationURL }}">Accept the invite</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>密码重置邮件模板
用于用户密码重置/找回时发送邮件。
文件名:
oauth_email_recovery_template.html
内容:
<h2>Reset Your Password via Huawei Cloud RDS Supabase</h2> <p>Follow this link to reset the password for your user:</p> <p><a href="{{ .ConfirmationURL }}">Reset Password</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>邮箱变更邮件模板
用于用户修改邮件绑定时发送邮件。
文件名:
oauth_email_change_template.html
内容:
<h2>Confirm Your Email Change via Huawei Cloud RDS Supabase</h2> <p>Follow this link to confirm the update of your email from {{ .Email }} to {{ .NewEmail }}:</p> <p><a href="{{ .ConfirmationURL }}">Change email address</a></p> <p>Alternatively, enter the code: {{ .Token }}</p> <p>Ate, enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>Magic Link邮件模板
用于免密魔法链接(MAGIC_LINK)登录时的邮件发送。
文件名:
oauth_email_magic_link_template.html
内容:
<h2>Your Magic Link via Huawei Cloud RDS Supabase</h2> <p>Follow this link to direct login <a href="{{ .SiteURL }}">{{ .SiteURL }}</a></p> <p><a href="{{ .ConfirmationURL }}">Log In</a></p> <p>Attention: The default validity period of the link and code is 1 hour.</p>重新认证邮件模板
用于重新认证时的邮件发送。
文件名:
oauth_email_reauthentication_template.html
内容:
<h2>Confirm Your Reauthentication via Huawei Cloud RDS Supabase</h2> <p>Enter the code: {{ .Token }}</p> <p>Attention: The default validity period of the link and code is 1 hour.</p>注意事项:
- 模板文件仅支持HTML格式,大小不超过1MB。文件名称仅支持英文、数字及下划线,不支持中文和特殊字符,请正确有效填写,确保内容完整性,否则会造成对应邮件功能不可用。
- 模板中使用{{ .ConfirmationURL }}作为确认链接占位符,使用{{ .Token }}作为验证码占位符,RDS Supabase会在发送邮件时将自动替换为实际值。更多配置(含占位符)和使用说明,请参考Supabase开源官网文档。
- 如上模板均为非必须项,只有在内置模板不满足要求,需要使用自定义模板的场景下才需要创建。
- 参考开启或关闭Storage存储配置章节,开启Supabase的Storage存储功能。并创建一个用于存储邮件模板的Bucket桶。
在Supabase Dashboard左侧导航栏单击“Storage”卡片,再单击页面中的“New Bucket”按钮,创建一个Bucket。
图8 RDS Supabase Dashboard Storage页面
在弹出的Bucket桶创建界面中,进行相关填写与设置。然后单击“Create”按钮,完成创建。
- Bucket name:填写桶名称,不建议填写中文和特殊字符,避免后续使用过程中错误处理字符编码转换而发生故障。样例:oauth-email-bucket。
- Public bucket:开启。确保公网场景下能直接访问,不再额外添加权限。
图9 RDS Supabase Dashboard创建Bucket桶
- 上传邮件模板到Storage Buckt桶中。
在Storage Buckets桶列表界面,找到步骤2创建的桶,单击名称进入该桶的文件管理视图。然后单击右上方的“Upload files”按钮,进行文件上传操作。
图10 RDS Supabase Dashboard Bucket上传模板文件
- 参考查看Auth完整配置步骤,进入用户认证Auth配置页面。 图11 RDS Supabase应用Auth配置(邮件模板配置)
- 根据实际情况,按需修改对应的邮件模板。根据邮件类型,找到对应模板配置行,单击右侧的“修改”按钮进行参数填写。
- 配置填写完成后,会触发一个配置下发任务,请耐心等待任务完成,确保配置已在Supabase服务中生效。