如何在移动应用程序ASP.NET Web Api和外部登录提供程序之间实现oAuth2

时间:2016-09-02 08:44:32

标签: ios asp.net-web-api oauth owin google-login

想象一下,我们希望在oAuth2 protocol之后实现架构。我们将ASP.NET Web API作为服务和外部身份提供者,例如,谷歌。现在,我的客户端导航到谷歌,获取访问令牌并向我的REST服务发出请求。如何验证此令牌?如何让我的Web Api信任Google的令牌?

我有一个使用Identity Server 3作为身份提供者(安全令牌服务)的示例,我将我的Web Api作为OWIN中间件运行,它引用了身份服务器(来自Startup.cs类)并且这样它实际上可以信任它,因此Identity Server发出的每个令牌都可以从我的REST服务中理解。如果我想直接调用Google的登录信息并将其用作第三方提供商,我该如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您编写此类场景的方式可以这样工作:

  1. 您创建了一个Google应用程序并获取了访问密钥并设置了返回网址
  2. 您的前端会将用户重定向到Google的登录页面,并传递您的应用访问密钥。
  3. Google对用户进行身份验证,然后使用授权码调用您的应用程序。
  4. 然后,您使用此代码点击Google并收到访问令牌。
  5. 使用访问令牌,您现在可以访问Google的API并检索您有权访问的任何信息,并可以找到有关该用户的更多信息。此时,在您自己的会员系统和Google的OAuth2系统之间建立链接是正常的。您可以存储令牌供以后调用,稍后您可以使用refresh_token机制在需要时继续与Google的API通信。
  6. 考虑到所有这些,您显然不需要自己的授权服务器,但您仍然需要资源服务器(基本上是您自己的REST API)并构建您自己的中间件,以便它可以理解Google或任何其他提供商的令牌,它可以与谷歌的API等进行对话。

    您将实现自己的[Authorize]标签版本,这样您的系统仍然可以以类似的方式工作,除非您不再使用Owin。