Oauth2 使用 hd 限制特定域名的电子邮件不起作用

23
我的应用程序通过在请求中的hd参数中指定abc.com来限制使用Oauth2登录到特定域名,例如abc.com。Restrict Login Email with Google OAuth2.0 to Specific Domain Name但是最近几天它允许任何有Google帐户的人登录。我确定我没有更改代码,甚至根据此链接的说明验证了结果uri中指定了我的域名名称的hd参数。https://developers.google.com/identity/protocols/OpenIDConnect#hd-param 那么有谁能告诉我我做错了什么吗?这是我的代码。
     `redirect( uri : "https://accounts.google.com/o/oauth2/auth?" +
            "redirect_uri=${redirectUri}&" +
            "response_type=code&" +
            "client_id="${my_client_id}"& +
            "scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email" +
            "+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&" +
            "approval_prompt=auto&" +
            "hd=apposit.com")`

2
我遇到了同样的情况,几周前HD参数不再限制访问指定的域。代码没有任何更改,它只是不再限制对HD参数的访问... 有人知道发生了什么吗? - sboss
1个回答

10

我不知道为什么会发生这种情况,但是你可以在允许用户进入应用程序之前,通过使用Java的contains()方法或更可靠的endsWith()方法,检查用户电子邮件是否包含abc.com,以添加第二个安全机制。

但这仍然只是一个快速修复,其他人如果有更好的解决方案,请回答这个问题。


2
如果我是你,我会更加小心,因为很容易忽略这个机制,只需创建类似于abc.comHACKER@gmail.comhacker@abc.com.hacker.com的帐户。 - Michal_Szulc
3
我完全同意,但正如我之前所说的,这只是一个快速解决方案,真正的解决方法应该是找到让高清工作的方法。 - robel
1
或者您可以使用 endsWith() 方法。 - James
你可以使用正则表达式。 - José

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接