实现两条腿的OAuth以获取用于Javascript的用户特定数据

实现两条腿的OAuth以获取用于Javascript的用户特定数据,javascript,rest,oauth,spring-security,oauth-2.0,Javascript,Rest,Oauth,Spring Security,Oauth 2.0,我正在潜入OAuth2.0以保护我的RESTful服务。我拥有消费者和提供者,因此不需要最终用户允许访问提供者上的数据。我已经尝试过客户端凭据流,但这似乎只允许我为整个客户端获取令牌,而不允许为单个用户获取令牌。如果我在Javascript中为我的客户机使用令牌,那么它将提供给所有用户,并且不会非常安全,因为用户可能会获取所有其他用户的数据 有没有一种方法可以让我使用两条腿(也称为客户端凭据)来获取一个用户特定的令牌,该令牌可以在Ajax/Javascript中使用(类似于隐式流提供的,但无需用

我正在潜入OAuth2.0以保护我的RESTful服务。我拥有消费者和提供者,因此不需要最终用户允许访问提供者上的数据。我已经尝试过客户端凭据流,但这似乎只允许我为整个客户端获取令牌,而不允许为单个用户获取令牌。如果我在Javascript中为我的客户机使用令牌,那么它将提供给所有用户,并且不会非常安全,因为用户可能会获取所有其他用户的数据

有没有一种方法可以让我使用两条腿(也称为客户端凭据)来获取一个用户特定的令牌,该令牌可以在Ajax/Javascript中使用(类似于隐式流提供的,但无需用户批准)


谢谢。

你说得对,标准没有提到“客户端凭据授予”场景的用户凭据。但是,如果受保护的资源属于用户,则每个令牌都应该与特定用户相关。根据你的问题,我认为情况就是这样

如果您也在实现OAuth服务器,那么您可以很容易地做到这一点。只需在“客户端凭据授予”场景中向授权请求添加一个“user_id”参数。在服务器端处理请求时,可以将令牌绑定到指定的用户。您可以将此视为您自己对协议的轻微扩展。


您可能还希望成为完全标准的Com共振体,不做任何非硬性规定的事情,或者您可能无法访问OAuth服务器实现。在这种情况下,您可以尝试使用与用户无关的令牌(或您在问题中所称的“整个客户端”令牌)。但是,在访问受保护的资源时,必须明确指定用户(例如,作为资源路径的一部分或在使用HTTP的查询参数中),因为它不能从令牌本身推断出来。

我发现了自动批准客户端的能力,因此当某些客户端访问其数据时,用户不必授权。这在我的场景中起作用,因为我对两个网站使用相同的单点登录机制,并且登录到提供商对用户是透明的。

请至少对您的答案发表评论!谢谢。这可能行得通,但我必须重写一下客户端凭据用例的预期用途。我认为在我的场景中,自动批准某些客户端会更好,因为客户端和提供者都使用相同的身份验证服务器(因此用户在访问提供者时不必重新登录)。