我们希望我们的应用程序同时支持本地帐户登录和通过 Facebook 等社交登录。用户通过身份验证后,我们希望返回一个访问令牌,以便用户访问我们自己的 API。但是,使用 OAuth/OIDC 进行社交登录时,返回的访问令牌将用于社交身份提供商 API,而不是用于访问我们自己的 API/应用程序用户数据的令牌。在这种情况下,通常是否建议使用身份代理或扩展我们自己的 OAuth2 服务器来支持多次登录,但最后总是返回我们自己的 API 的访问令牌?
我想知道是否可以支持普通的 OIDC/OAuth 社交登录,然后才获取访问令牌来访问我们应用程序的用户数据(即我们自己的 API 的访问令牌),以便在需要调用我们的应用程序时使用自己的 API。但不确定这将如何运作,或者是否可能。
您描述的是RFC6749中的标准OAuth解决方案,它应该像这样工作:
关键行为是应用程序接收其自己的 API 的访问令牌。此访问令牌包含您可以完全控制的范围和声明。
错误的方法是将社交登录直接编码到您的应用程序中。这样做会导致他们收到对您自己的 API 没有用处的
foreign access tokens
。
使用 AS 还可以减少应用程序中的安全代码,并随着应用程序数量和身份验证方法的增长而扩展。