【问题标题】:Add Google authentication method to existing ASP.NET WebAPI project将 Google 身份验证方法添加到现有 ASP.NET WebAPI 项目
【发布时间】:2018-11-22 18:38:13
【问题描述】:

我有现有的C# ASP.NET WebAPI 2.0 项目,其中包含用于另一个网站 的一些方法。此 WebAPI 项目没有任何身份验证并返回 JSON 数据。第一种方法从 website 获取两个参数:EmailPassword 然后在 MS SQL 表中检查它并返回 JSON (success wrong):如果 success 然后我创建一些 token 并添加 token user_id 到另一个 MS SQL 表。如果一切正常,此方法返回 token

    [HttpPost]
    [Route("api/v1/auth/email-login")]
    [ActionName("EmailLogin")]
    public IHttpActionResult Postpipeline_EmailLogin([FromBody] PostAuthItem postAuthItem)
    {
        try
        {
            int? userId = db.USERS_GetUserId(postAuthItem.Email, postAuthItem.Password).FirstOrDefault();
            if (userId == null)
            {
                return Ok(new
                {
                    Error = "Wrong email or password!"
                });
            }
            else
            {
                string token = this.GetToken(40);

                db.TOKENS_Add(userId, token);
                db.SaveChanges();

                return Ok(new
                {
                    Token = token
                });
            }
        }
        catch (Exception ex)
        {
            return new System.Web.Http.Results.ResponseMessageResult(Request.CreateErrorResponse((HttpStatusCode)400, new HttpError("Http error! " + ex.Message + " " + ex.InnerException.Message)));
        }
    }

现在通过 Google 的授权已添加到 网站。所以我需要添加新方法,它将通过谷歌检查成功或错误的身份验证。 网站 开发者只向我发送 access_token,如下所示:

Request:
{
    "access_token": "ya47.Kdd_KeQ0mQiTzom20dQ6M83742KMYQpkCUqCZv0UbU2CjhMIuxIT5ugRXwIrOUcV-TGbUztMiRDRPzh0INrGgh7gqXyaIfyQAnNMmP0GhXRc6bbanEiPxV7fK9ss"
}

是否有可能通过此请求检查有效的 Google 用户?

【问题讨论】:

    标签: c# asp.net-web-api asp.net-identity google-oauth


    【解决方案1】:

    您可以直接通过 Userinfo 端点访问

    GET /userinfo/v2/me HTTP/1.1
    Host: www.googleapis.com
    Content-length: 0
    Authorization: Bearer 29.GltcBsh3Q-qbIEslOBcifBKlRh2GfE0-P11tDMgBx_WdWdH1TG6iWkDtzj0e_zIERaDyq6b_oseOIiSpG3iO0LIeQuAAyn5VVDe50WVmdtWhrMiN27wTsUJY0jxP
    

    这将返回有关用户的信息

    {
      "picture": "https://lh5.googleusercontent.com/-a1CWlFnA5xE/AAAAAAAAAAI/AAAAAAAAl1I/UcwPajZOuN4/photo.jpg", 
      "name": "Linda Lawton", 
      "family_name": "Lawton", 
      "locale": "en", 
      "gender": "female", 
      "link": "https://plus.google.com/+LindaLawton", 
      "given_name": "Linda", 
      "id": "117200475532672775346"
    }
    

    【讨论】:

    • 请记住,如果您请求了配置文件范围之一,您将只能获取有关用户的信息。您如何授权此用户?
    • 解决了!非常感谢你,琳达!
    猜你喜欢
    • 2015-11-04
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2021-06-05
    • 2018-03-23
    相关资源
    最近更新 更多