我想保护我的Spring RESTful后端。一种方法(→右侧)是使用OAuth 2.0类似如下所示:验证Spring RESTful资源服务器上的OAuth 2.0访问令牌
http://www.youtube.com/watch?v=8uBcpsIEz2I
在我的架构中的资源服务器和授权服务器不同一实体。我真的只是提供一些JSON REST服务。没有UI。如果我读了OAuth2 RFC他们只是说:
授权服务器和资源服务器 之间的相互作用是超出了本规范的范围。授权服务器 可以是与资源服务器相同的服务器或单独的实体。 单个授权服务器可能会发出由多个资源服务器接受的访问令牌 。
我发现我使用它来说明我的观点上cloudfoundry.com一个良好的图(上方YouTube视频相关的):
“令牌”供应商:这可能/应例如google或facebook。
RESTful后端:这实际上是我的代码。春天的RESTful服务,如:
@Controller
@RequestMapping("/api/v1")
public class MyResourceToProtect {
@Autowired
private MyService service;
@RequestMapping(value = "/resource/delete/{name}",
method = RequestMethod.DELETE,
consumes = MediaType.APPLICATION_JSON_VALUE,
headers = "Content-Type=application/json")
@ResponseStatus(HttpStatus.OK)
public void delete(@PathVariable("name") String name) {
service.delete(name);
}
}
(这仅仅是一些示例代码)
现在我的问题:是否有可能以某种方式来验证这是由AuthServer(Facebook,谷歌)生成的访问令牌?我知道我需要在我的ResourceServer上有一个“token to user”映射(数据库)。基本上,我想从贝宝设计我的RESTful API像一个:
https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/
但我怎么能处理的步骤,如果我想使用Facebook或谷歌作为身份验证提供者1 & 2?这甚至有可能吗?
其他想法:可能我需要提供我自己的/oauth2/token
端点,然后委托给底层的AuthProvider。
我的用例与OP非常相似,我怀疑@domi的回答也回答了我当前的问题 - 如果我有一个使用Spring Social编写的“前端”应用程序,并且它有一个来自Google的OAuth访问令牌,该“前端”应用程序应该如何将该访问令牌传递给我的Spring Security应用程序?我们已经尝试通过“身份验证:”标题传递,但无济于事。 –