0

我需要通过 Google 登录对 ASP.NET Core 应用程序进行身份验证,但是客户端应用程序(即 ASP.NET Core 应用程序)和 Google 登录之间的 Web API...我知道这听起来很混乱,所以让我解释一下图表。

这是包含谷歌登录按钮并通过他们的谷歌凭据对用户进行身份验证的典型方法,它工作得很好

第 1 步:首先,在 google 身份开发者门户网站上创建一个新应用,生成 ClientId、ClientSecret 并指定 redirect_url,例如: https ://yoursite.com/signin-google 。

第 2 步:在 ASP.NET Core 项目的 Startup.cs 类中,使用 AddGoogle 作为身份验证中间件,它可以正常工作。

包括下图以供您理解: 在此处输入图像描述

这是建议的流程。在客户端和谷歌登录之间使用 REST API。问题是,我如何验证客户端?

在此处输入图像描述

4

1 回答 1

1

据我了解,您希望您的客户端应用程序代表用户调用 REST 服务。REST 服务需要确保客户端和用户都经过身份验证。

我们使用OpenID Connect Hybrid flow实现了这一点。坏消息是我们必须在解决方案中添加另一个服务来实现这一点。

这与您提出的解决方案有何不同:

  • 您必须拥有自己的身份服务,并且这必须知道 REST 服务、客户端应用程序和用户身份的存在。
  • 客户端应用程序重定向用户以使用身份服务进行身份验证(进一步重定向用户以使用 Google 进行身份验证)
  • Identity Server 为客户端应用程序提供用户的 ID 令牌,以及可以交换访问令牌的代码
  • 客户端应用程序请求访问令牌。此访问令牌将对客户端和用户进行身份验证
  • 然后,客户端应用程序在调用 REST 服务时使用此访问令牌进行身份验证
  • REST 服务向 Identity Server 发出一次性请求以获取签名密钥,并使用这些密钥来验证访问令牌。

在此处输入图像描述

我们在实现 Identity Server 时碰巧使用了IdentityServer4,但该协议独立于任何一种实现而存在。

于 2019-09-13T00:19:20.150 回答