用于跨客户端身份验证的 OAUTH2 流程

OAUTH2 flow for authentication across clients

我似乎非常困惑,不知何故 OAUTH2 或更新更严格的子集 OpenID Connect 只是不要在我的脑海中点击...

我的应用程序是 RESTFUL 服务,没有任何 Web UI。

几个客户正在使用它(来自网络和移动应用程序) 我的服务应该存储每个用户的数据。

现在我们希望允许客户端通过支持 OAUTH2 的通用提供程序(例如 facebook、google 等)进行身份验证

他们应该能够在他们的应用程序中处理身份验证,只需为我的服务提供一个身份令牌,我可以像 "Ok this is a valid user token that was signed by a valid authority" 中那样验证该身份令牌,并且可以使用它来关联我这边的用户数据。 (当然 return 稍后会发送给客户)

如何使用 OAUTH2 实现这一点?使用哪个流程?

身份令牌是 OIDC (OpenID Connect) 的东西,OAuth2 是关于授权的。验证(验证)最终用户身份是 OIDC 的主要 objective。

在您的用例中:通常在最终用户通过 OP 验证后(主要使用隐式流),client/RP(中继方)将收到身份令牌和访问令牌,身份令牌是为客户端准备的,访问令牌是用于请求受保护的 REST API.

的令牌

示例:setRequestHeader("Authorization", "Bearer " + token);

现在你的 REST API,将收到的 Bearer/access 令牌(通常是 JWT 格式)发送到 OP,如果它有效,那么你应用你的 permissions/filtration 逻辑。

也许这个gist可以帮助您了解每个流程的用例。

希望它能回答您的问题。