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

Posted

技术标签:

【中文标题】Oauth2 使用 hd 限制具有特定域名的电子邮件不起作用【英文标题】:Oauth2 restrict to emails with specific domain name using hd not working 【发布时间】:2016-03-17 03:51:08 【问题描述】:

我的应用程序通过在我的请求的 hd 参数中指定 abc.com 来限制 Oauth2 登录到特定域,例如 abc.com确定我没有更改代码,甚至验证了结果 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")`

【问题讨论】:

我遇到了同样的情况,因为几周前 HD 参数不再限制对指定域的访问。代码没有变化,只是不再限制对 HD 参数的访问……有人知道怎么回事吗? 【参考方案1】:

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

但这仍然是一个快速解决方案,其他有解决方案的人应该回答这个问题

【讨论】:

如果我是你,我会更加小心,因为很容易忽略这种机制,只需创建像 abc.comHACKER@gmail.com 这样的帐户>hacker@abc.com.hacker.com. 我完全同意,但正如我上面所说,它只是一个快速修复,真正的解决方案应该是找到一种方法让高清工作。 或者你可以使用 endsWith() 方法。 你可以使用正则表达式

以上是关于Oauth2 使用 hd 限制具有特定域名的电子邮件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

公司邮箱的优势详解

买企业邮箱有什么活动?TOM企邮限时优惠到底

可以在 oauth2 中验证电子邮件地址吗?

Oauth2、范围和用户角色

用于检查特定电子邮件域名的 Oracle 函数

每个 refreshToken 的 OAuth2 访问令牌限制