实施两条腿OAuth以获取用户特定数据以便在Javascript中使用

时间:2012-06-07 13:31:30

标签: javascript rest oauth spring-security oauth-2.0

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

有没有办法可以使用2-legged(也称为客户端凭据)来获取可用于Ajax / Javascript的用户特定令牌(类似于隐式流提供的,但未经用户批准)?< / p>

感谢。

2 个答案:

答案 0 :(得分:0)

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

如果您正在实施OAuth服务器,那么您可以轻松地执行此操作。只需在“客户端凭据授权”方案中向授权请求添加“user_id”参数即可。在服务器端处理请求,您可以将令牌绑定到指定的用户。您可以将此视为您对协议的轻微扩展。

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

答案 1 :(得分:0)

我发现了自动批准客户端的功能,因此用户无需在某些客户端访问其数据时进行授权。这适用于我的场景,因为我对两个网站使用相同的单点登录机制,并且提供商的登录对用户是透明的。