我正在为我的Web应用程序使用Firebase身份验证,并为Firebase身份验证的Google登录功能自定义重定向域,以便Google的身份验证页面将
显示继续:https://auth.mydomain.com
,
代替继续:https://my-app-12345.firebaseapp.com
。
所以我按照Firebase's documentation上的说明执行了四个步骤:
(1)为auth.mydomain.com
创建一个指向my-app-12345.firebaseapp.com
的CNAME记录
(2)将auth.mydomain.com
添加到Firebase控制台的授权域列表中
(3)在Google OAuth设置页面中,将重定向页面的URL白名单https://auth.mydomain.com/__/auth/handler
(4)编辑我的应用程序的JavaScript代码以初始化Firebase库:
var config = {
...
// from 'authDomain: my-app-12345.firebaseapp.com,'
authDomain: 'auth.mydomain.com',
...
};
但是,此后,当我的应用程序调用{{1}}方法时,Web浏览器将显示隐私警告,如下所示:
您的连接不是私有的
攻击者可能试图从 auth.mydomain.com 窃取您的信息(例如,密码,消息或信用卡)。 了解详情
NET :: ERR_CERT_COMMON_NAME_INVALID
...
此服务器无法证明它是 auth.mydomain.com ;其安全证书来自 firebaseapp.com 。这可能是由于配置错误或攻击者拦截了您的连接导致的。
继续访问auth.mydomain.com(不安全)
证书信息如下:
firebaseapp.com
发布者:Google Internet Authority G3
有效期:2018年11月13日,星期二
此证书有效。
详细信息
主题名称
国家/地区:美国
州/省:加利福尼亚
位置:山景城
组织:Google Inc
通用名称:firebaseapp.com
下面是URI:
firebase.auth().signInWithRedirect(provider)
为什么要为Google登录提示https://auth.mydomain.com/__/auth/handler?apiKey=apiKey&appName=%5BDEFAULT%5D&authType=signInViaRedirect&providerId=google.com&scopes=profile&redirectUrl=https%3A%2F%2Fwww.mydomain.com%2Flogin&v=5.0.4
自定义重定向域,以及如何避免出现警告消息,例如使用NET::ERR_CERT_COMMON_NAME_INVALID
自己的证书将主题备用名称添加到证书中?
顺便说一句,在上面的警告页面中,如果单击继续执行auth.mydomain.com(不安全),则身份验证将按预期进行。
答案 0 :(得分:5)
为了澄清,从2020年1月6日开始,以上方法(在Firebase Hosting中使用“重定向”)不再起作用。
下面用https://levelup.gitconnected.com/how-to-connect-a-domain-to-your-firebase-project-cd47373bad79编写的内容-可以看到,对于身份验证,我们需要使用“自定义域”而不是“重定向”
这是因为如果使用重定向,则在自定义域的出口和入口点与Google的身份验证服务器之间签名的SSL将使握手失败。
换句话说:
如果是首次设置:
在Firebase项目my-app-12345的控制台中,单击侧面菜单上的“托管”。
出现“设置托管”弹出窗口时,单击“继续”。然后单击完成。
在“托管”页面中,单击“连接域”。
出现“连接域”弹出窗口时,输入auth.mydomain.com。然后不勾选“将auth.mydomain.com重定向到现有网站”复选框。然后输入my-app-12345.firebaseapp.com。然后单击继续。
如果您已经设置了重定向域,但无法使其正常工作-您只需编辑条目,然后更改为“自定义”类型即可。
更改后等待10到30分钟,即可正常使用此功能。
答案 1 :(得分:4)
由于auth.mydomain.com
通过CNAME记录指向my-app-12345.firebaseapp.com
,因此firebaseapp.com
的主机应为auth.mydomain.com
提供SSL证书。即使my-app-12345
未使用Firebase Hosting,也必须在Firebase Hosting页面中完成此操作。这是基于Firebase的documentation的逐步方法:
my-app-12345
的控制台中,单击侧面菜单上的“托管”。auth.mydomain.com
。然后单击“将auth.mydomain.com
重定向到现有网站”复选框。然后输入my-app-12345.firebaseapp.com
。然后单击继续。mydomain.com
”弹出窗口时,请按照说明进行操作。然后单击验证。 (验证可能需要几分钟)。然后单击完成。现在auth.mydomain.com
将以Pending
状态显示在域部分中。它将很快更改为Connected
。一段时间后,NET::ERR_CERT_COMMON_NAME_INVALID
警告问题将消失。
P.S。在Firebase技术支持团队的帮助下,我找到了自己的问题的答案。