首页 > 解决方案 > 是否有一种经济高效的方式来协调多个登录流程,主要是 OAuth2?

问题描述

我想允许我的应用程序的用户使用各种 OAuth 提供商(Facebook、Google、Github 等)登录。我的应用实际上不需要访问任何人的 API;我只是为了方便而提供这些登录名。

我的客户端(本机应用程序)执行隐式授权流程并返回一些内容,并将其发送到我的 API。在提供对我自己的资源的访问之前,我如何验证这些东西?

我说“东西”是因为,对于谷歌来说,它实际上id_token我可以验证的(使用谷歌的公钥)。但似乎在一般情况下,我需要使用访问令牌并通过实际向提供商资源服务器上的某个端点发出 API 请求来验证它。显然,这意味着我必须分别处理每个不同的 OAuth 提供者。

OktaAuth0这样的身份即服务提供商通过协调所有不同的身份提供商和方法来简化这一过程。不幸的是,这些对于几千名用户来说变得非常昂贵(至少,在公共定价页面上)。

问题:

标签: authenticationoauth-2.0openid-connectgoogle-authentication

解决方案


一种选择是使用IdentityServer,它可以对您正在寻找的不同提供者进行协调。

理想情况下,您应该只支持系统内的一组令牌以避免不必要的复杂性。但是,在本地运行您自己的 IdentityProvider 也需要一些知识和管理它。


推荐阅读