Efrain Mejias C Asked: 2020-06-18 07:56:15 +0800 CST 2020-06-18 07:56:15 +0800 CST 2020-06-18 07:56:15 +0800 CST 使用 Google 安全系统进行身份验证 (LOGIN) 772 我开发了一个 ASP.NET WebForms 应用程序,我需要如果用户已在浏览器中使用 Google 帐户进行身份验证,他们可以访问该页面,否则不能。 c# 3 Answers Voted Leandro Tuttini 2020-06-18T17:17:25+08:002020-06-18T17:17:25+08:00 您可以在应用程序中使用 google 凭据,但您必须专门实现请求凭据的登录,没有自动自动登录。 你将不得不使用OAuth ASP.NET 的 OAuth 谷歌 Google API 客户端库 OAuth 2.0 正如您将看到的,您需要调用一个使用 aClient ID来授权身份验证并返回您将在开发中使用的令牌的 api。 可能是,如果另一个应用程序之前已经进行了身份验证,则凭证数据将被保留并且新的身份验证是直接的,但您仍然需要实现 OAuth 基础架构并进行调用。 Pako LordPakus 2020-06-18T10:53:46+08:002020-06-18T10:53:46+08:00 严格按照您的要求,我认为无法做到。 Google 对其安全政策非常严格,因此您不能只获取浏览器身份验证以在您的应用程序中使用。例如,这将使您能够访问用户的电子邮件地址,这是谷歌最终禁止的。(反例,您的应用程序可能是用户不知道的电子邮件抓取工具) 您可以做的是使用 google 帐户登录您的应用程序,但用户必须接受您在应用程序中使用的严格权限。 为此,您必须使用 OAuth 2.0 协议登录。您在官方谷歌页面上有更多信息:https ://developers.google.com/api-client-library/dotnet/guide/aaa_oauth 如果您对如何使用 OAuth 有疑问,您应该提出一个新问题,因为它与这个问题无关。 Best Answer Efrain Mejias C 2020-08-01T14:13:42+08:002020-08-01T14:13:42+08:00 public void GoogleAutentificacion() { GoogleConnect.ClientId = Valor.GoogleClientId (); GoogleConnect.ClientSecret = Valor.GoogleClientSecret (); GoogleConnect.RedirectUri = Request.Url.AbsoluteUri.Split('?')[0]; if (!String.IsNullOrEmpty(Request.QueryString["code"])) { String code = Request.QueryString["code"]; String json = GoogleConnect.Fetch("me", code); Controller.DataGoogle.GoogleProfile perfil = new JavaScriptSerializer().Deserialize<Controller.DataGoogle.GoogleProfile>(json); Session["PerfilID"] = perfil.Id; Session["PerfilNombre"] = perfil.DisplayName; Session["PerfilEmail"] = perfil.Emails.Find(email => email.Type == "account").Value; Session["PerfilSexo"] = perfil.Gender; Session["PerfilTipo"] = perfil.ObjectType; Session["PerfilImagen"] = perfil.Image.Url.ToString(); } if (Session["PerfilEmail"] != null) { if (Sub.ValidarMail(Session["PerfilEmail"].ToString().ToLower())) { Response.Redirect("~/View/StaGemaList/MenuPrincipal.aspx"); } else { String ScriptAct = "<script language='javascript'>" + "NoAutenticadoStaGema();" + "</script>"; ClientScript.RegisterStartupScript(this.GetType(), "NoAutenticadoStaGema();", ScriptAct); } } }
您可以在应用程序中使用 google 凭据,但您必须专门实现请求凭据的登录,没有自动自动登录。
你将不得不使用
OAuth
ASP.NET 的 OAuth 谷歌
Google API 客户端库 OAuth 2.0
正如您将看到的,您需要调用一个使用 a
Client ID
来授权身份验证并返回您将在开发中使用的令牌的 api。可能是,如果另一个应用程序之前已经进行了身份验证,则凭证数据将被保留并且新的身份验证是直接的,但您仍然需要实现 OAuth 基础架构并进行调用。
严格按照您的要求,我认为无法做到。
Google 对其安全政策非常严格,因此您不能只获取浏览器身份验证以在您的应用程序中使用。例如,这将使您能够访问用户的电子邮件地址,这是谷歌最终禁止的。(反例,您的应用程序可能是用户不知道的电子邮件抓取工具)
您可以做的是使用 google 帐户登录您的应用程序,但用户必须接受您在应用程序中使用的严格权限。
为此,您必须使用 OAuth 2.0 协议登录。您在官方谷歌页面上有更多信息:https ://developers.google.com/api-client-library/dotnet/guide/aaa_oauth
如果您对如何使用 OAuth 有疑问,您应该提出一个新问题,因为它与这个问题无关。