在 Oauth2 中,用户(React SPA)通过授权服务器进行身份验证,例如社交登录。 SPA 在多次重定向后接收令牌,将其存储在内存中,并在访问资源服务器 (REST-api) 时将其包含到授权标头中。资源服务器使用提供者验证令牌。这是对token认证的正确理解吗?
假设rest-api 在同一事务中调用内部微服务。检索专用于每个服务帐户的令牌(丢失最终用户的上下文)是一种好的做法,还是应该转发原始令牌?
我也很困惑如何通过重定向保留反应应用程序状态。
您应该设计每个 API 以要求特定的范围,例如
sales
或任何您的业务领域。然后,授予客户端调用 API 所需的范围。这使您能够在服务之间转发访问令牌,同时安全地维护用户身份和其他值。
在某些情况下,您可能会认为这给了上游 API 太多的权限,例如,如果您仅部分信任该 API。在这种情况下,请使用 RFC 8693 中的OAuth 令牌交换 为正常用户获取新的访问令牌,并缩小范围以发送到上游 API。
当用户存在并且 API 对用户身份进行操作时,您不应使用客户端凭据流程。