代码之家  ›  专栏  ›  技术社区  ›  Dumber_Texan2

在ASP.NET核心API 2.1中使用Google AccessToken获取外部声明

  •  0
  • Dumber_Texan2  · 技术社区  · 5 年前

    我使用json web令牌(承载)作为默认身份验证。然后我使用(cookies)作为google的身份验证。

    我正在使用asp.net核心api中的默认google身份验证来获取accesstoken。然后,我使用重定向将accessToken传递到URL中的角度应用程序。这类似于ASP.NETMVC5WebAPI的工作方式。从那里,我正在回拨我的ASP.NET核心API,尝试获取剩余的声明。我正在使用AccessToken进行调用。

    有人知道如何使用google accesstoken访问外部声明吗?我知道如何在asp.netmvc5webapi中实现这一点,但是asp.net内核有很大不同。

    我可以在这里看到外部索赔。在用户通过google验证之后,oauth进程中会发生这种情况。这是我的外部调用方法。

    var result = await HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme);
    

    下面是一些看起来有用的信息,但它并没有特别针对第三方身份验证。

    https://docs.microsoft.com/en-us/aspnet/core/migration/claimsprincipal-current?view=aspnetcore-2.2

    如果我使用头中的acccsstoken调用api,并像这样使用httpcontext.authenticatesync….

    var result = await HttpContext.AuthenticateAsync(JwtBearerDefaults.AuthenticationScheme);
    

    我明白了。

    {系统。异常:没有可用于令牌的SecurityTokenValidator:ya29.glt5b\u thgphe8-fcr

    提前谢谢!任何帮助都非常感谢。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Dumber_Texan2    5 年前

    这就是我最后所做的。因为我可以在我的externalogincallback方法中从cookie获取声明,所以我继续创建了一个新的json web令牌(jwt),将提取的声明添加到它,然后将其传递给我的角度应用程序。现在,当我对我的api进行回调时,我可以在getuserinfo方法中使用这行代码读取该令牌并提取声明。

    HttpContext.AuthenticateAsync(JwtBearerDefaults.AuthenticationScheme);
    

    总之,由于我无法像在我的asp.netmvc5webapi中那样读取google accesstoken,所以我继续创建了一个新的jwt令牌,添加到声明中并使用了它。

    顺便说一句,我不得不这么做,因为我不能直接从角度调用我的外部方法,因为一个已知的cors策略问题。