gpt4 book ai didi

asp.net-mvc-3 - 谷歌 OpenId : Accept only users of a particular company

转载 作者:行者123 更新时间:2023-12-04 18:18:27 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中使用 open id,并且我已经成功地使用了 DotNetOpenId .

现在,谷歌为公司域名下的电子邮件和其他服务提供服务。 (例如 example@acompany.com)。有没有办法只对公司用户进行身份验证?

我知道我可以通过检查回复中的电子邮件地址来做到这一点。但我不认为这是一个好主意。如果用户未通过 acompany.com 以外的 Google 帐户进行身份验证,则更好。

请注意,我不知道 Open Authentication 或 DotNetOpenId 的内部逻辑。

编辑

默认谷歌的openId请求提示https://accounts.google.com/ServiceLogin?...
我可以手动将它(在浏览器中)更改为 https://accounts.google.com/a/iit.du.ac.bd/ServiceLogin?...它有效(iit.du.ac.bd 是我学校的域名)

我试图创建请求

        Identifier id1 = Identifier.Parse("https://www.google.com/a/iit.du.ac.bd");
Identifier id2= Identifier.Parse("https://www.google.com/a/iit.du.ac.bd/accounts/o8/id");
var openid = new OpenIdRelyingParty();

IAuthenticationRequest request1 = openid.CreateRequest(id1);
IAuthenticationRequest request2 = openid.CreateRequest(id2);

Google 的标识符是 https://www.google.com/accounts/o8/id"
编辑2

刚刚找到 google-apps-openid-url

最佳答案

您对使用电子邮件地址作为过滤器的犹豫是绝对正确的。跟随你的直觉。 :)

您应该过滤 OP Endpoint。这不仅可以向您保证 Google 是提供商,而且 Google 为每个单独的域都有一个专用的 OP 端点,因此您可以检查它。

IAuthenticationResponse response = relyingParty.GetResponse();
if (response != null) {
if (response.Provider.Uri.AbsoluteUri == "http://google.com/o8/....?domain=yourcompany.com") {
// Allow it
} else {
// Disallow it
}
}

类似的东西。您必须进行测试以查看您所期望的情况的实际 URI 是什么。

关于asp.net-mvc-3 - 谷歌 OpenId : Accept only users of a particular company,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244077/

25 4 0
文章推荐: wix - 每台机器和每用户安装的磁盘成本不变
文章推荐: 在iOS 13上构建时,UITableViewCell selectedBackgroundView的颜色不可见
文章推荐: select - Blazor:在使用 @bind 时如何在