Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用户可以为Gmail帐户欺骗谷歌认证域吗?_C#_Asp.net_Security_Oauth_Asp.net Webpages - Fatal编程技术网

C# 用户可以为Gmail帐户欺骗谷歌认证域吗?

C# 用户可以为Gmail帐户欺骗谷歌认证域吗?,c#,asp.net,security,oauth,asp.net-webpages,C#,Asp.net,Security,Oauth,Asp.net Webpages,我正在使用OAuth作为我的ASP.Net网页和C站点,这将有一天成为一个公共站点。在该公共网站中,实施了部分CMS,其中仅允许具有员工电子邮件的用户(即仅来自我们公司域的电子邮件,例如,我们的公司网)注册。我们公司的域名/电子邮件是通过Gmail管理的 我只为登录设置了OAuth Google,它工作得很好,但我想知道,在注册时,我正在检查我们公司域的电子邮件地址字符串的最后一部分有多安全,如下所示: var result = OAuthWebSecurity.VerifyAuthentica

我正在使用OAuth作为我的ASP.Net网页和C站点,这将有一天成为一个公共站点。在该公共网站中,实施了部分CMS,其中仅允许具有员工电子邮件的用户(即仅来自我们公司域的电子邮件,例如,我们的公司网)注册。我们公司的域名/电子邮件是通过Gmail管理的

我只为登录设置了OAuth Google,它工作得很好,但我想知道,在注册时,我正在检查我们公司域的电子邮件地址字符串的最后一部分有多安全,如下所示:

var result = OAuthWebSecurity.VerifyAuthentication(Href("~/Account/RegisterService", new { returnUrl }));

if (result.IsSuccessful)
{
    bool registered = OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false);

    if (registered)
    {
        Context.RedirectLocal(returnUrl);
        return;
    }

    email = result.UserName;

    if (!EmailValidator.IsEmailAdress(email)) //Simple Regex to check email string.
    {
        errorMessage = "The email address supplied was not a valid email address. ";
        errorMessage += "Please return to the main page and try again. If the problem ";
        errorMessage += "persists, please notify a site administrator for help.<br/><br/>";
        errorMessage += "<a class=\"retreatLink\" href=\"/\">Main Page</a>";
    }

    if (!email.EndsWith("@ourcomp.net")) //**THIS IS THE PART IN QUESTION**
    {
        errorMessage = "Your email address was valid, however, it seems that it's ";
        errorMessage += "not a \"City of Okmulgee\" email address. Please ensure that ";
        errorMessage += "your email address is part of the \"@ourcomp.net\" domain.<br/><br/>";
        errorMessage += "If you are having trouble changing your email address ";
        errorMessage += "try visiting Google's <a href=\"https://mail.google.com\">Gmail</a> ";
        errorMessage += "page and logging out. After you have logged out of gmail, revisit ";
        errorMessage += "the <a href=\"/\">main page</a> and click the ";
        errorMessage += "\"Log-in!\" button again. Then, when prompted by Gmail services, ";
        errorMessage += "log back in using a valid \"ourcomp.net\" email address.<br/><br/>";
        errorMessage += "For more help visit <a href=\"https://support.google.com/mail/answer/8154?hl=en\">";
        errorMessage += "Gmail Help</a> for quick steps on how to log-out of your Gmail account.";
    }
}
更多的代码/安全从这里开始,但我想我已经为这个问题提供了足够的信息,如果没有,请告诉我。有没有一种方法可以让一个随机的公共用户欺骗他们的域,从而通过我的if!电子邮件EndsWith@ourcomp.net检查,而不是实际上是我们公司的域的成员?我知道有些人可以用他们想要的任何电子邮件地址发送电子邮件,但我不希望他们可以用这种方式登录谷歌,对吧?。我需要知道,以便我知道是否需要锁定所有新帐户,直到审查或不审查或可能的其他方法


请原谅我对OAuth和Google身份验证缺乏了解,我对ASP.Net的这一部分还是相当陌生的,毫不奇怪,我在网上找不到任何东西。

这远不是一个权威的答案,但我会感到非常安全。谷歌至少不会让任何人在未经所有权验证的情况下添加电子邮件地址。这是我一直倾向的方向,但我对谷歌如何处理他们的电子邮件知之甚少。谢谢你的意见,@John