支持社交登录的最佳方式,但也始终返回我们自己的 API 的访问令牌

问题描述 投票:0回答:1

我们希望我们的应用程序同时支持本地帐户登录和通过 Facebook 等社交登录。用户通过身份验证后,我们希望返回一个访问令牌,以便用户访问我们自己的 API。但是,使用 OAuth/OIDC 进行社交登录时,返回的访问令牌将用于社交身份提供商 API,而不是用于访问我们自己的 API/应用程序用户数据的令牌。在这种情况下,通常是否建议使用身份代理或扩展我们自己的 OAuth2 服务器来支持多次登录,但最后总是返回我们自己的 API 的访问令牌?

我想知道是否可以支持普通的 OIDC/OAuth 社交登录,然后才获取访问令牌来访问我们应用程序的用户数据(即我们自己的 API 的访问令牌),以便在需要调用我们的应用程序时使用自己的 API。但不确定这将如何运作,或者是否可能。

authentication oauth-2.0 oauth openid-connect access-token
1个回答
0
投票

您描述的是RFC6749中的标准OAuth解决方案,它应该像这样工作:

  • 应用程序运行代码流并重定向到授权服务器(AS)
  • AS 重定向到社交登录身份提供商 (IDP)
  • 用户验证
  • IDP 将代币返还给 AS
  • AS 将令牌返回给应用程序

关键行为是应用程序接收其自己的 API 的访问令牌。此访问令牌包含您可以完全控制的范围和声明。

错误的方法是将社交登录直接编码到您的应用程序中。这样做会导致他们收到对您自己的 API 没有用处的

foreign access tokens

使用 AS 还可以减少应用程序中的安全代码,并随着应用程序数量和身份验证方法的增长而扩展。

© www.soinside.com 2019 - 2024. All rights reserved.