我想保护我的Spring RESTful后端。一种方式(右边?)是使用OAuth 2.0,如下所示:
http://www.youtube.com/watch?v=8uBcpsIEz2I
在我的架构中,资源服务器和授权服务器不是相同的实体。我真的只是提供一些JSON REST服务。没有UI。如果我读了OAuth2 RFC他们只是说:
授权服务器和资源服务器之间的交互 超出了本规范的范围。授权服务器 可以是与资源服务器相同的服务器或单独的实体。 单个授权服务器可以发出接受的访问令牌 多个资源服务器。
我在cloudfoundry.com上找到了一个很好的图表(与上面的youtube视频相关),我用它来说明我的观点:
“令牌”提供商:这可能/应该是google或facebook。
RESTful后端:这实际上是我的代码。 Spring 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,Google)生成的访问令牌?我知道我需要在ResourceServer的某个地方有一个“令牌到用户”映射(数据库)。基本上我想设计一个来自PayPal的RESTful API:
https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/
但我怎样才能处理步骤1& 2如果我想使用Facebook或Google作为auth提供商?这甚至可能吗?
其他想法:可能我需要提供自己的/oauth2/token
端点,然后委托给基础的AuthProvider。
答案 0 :(得分:4)
不确定怎么回答所有问题,所以我只想提出以下几点: