2011-12-11 65 views
1

我需要提供程序中的安全Restfull服务。我希望用户必须拥有使用REST服务的授权,并且如果不是注册开发人员,我可以生成使用stadistic或根本不允许调用REST服务。如何保护REST风格的Web服务(PROVIDER)

我一直在考虑用户在URL中发送电子邮件和密码(http://autor.derf.com/api/search/[email protected] & passwd = dasffsdf;)但不是很安全。

另外我已经阅读了关于oauth 2.0的文档,但是对Java来说文档是非常糟糕的。

是否有任何其他方式获得授权的RESTful API?

我想在iPhone,Android,Windows Phone的一个问题的REST API接入和网络

在此先感谢;)

回答

1

如果你打算写的所有的服务自己(在iPhone,Android等)的客户那么只要提供者通过安全传输层(例如SSL/HTTPS)进行通信,发送电子邮件和密码就是一个不错的选择。

如果您觉得您希望公开您的API,那么您以后可以随时添加对OAuth 1或2的支持。 (OAUth的整个想法是保护用户的密码,并且更好地控制客户端可以使用哪些API以及多长时间)。

但是,你的情况我至少会考虑使用基本身份验证,其中一个典型的HTTP请求,看起来有点像这样:

GET /path/to/api HTTP/1.1 
Host: www.example.com 
Authorization: Basic aHR0cHdhdGNoOmY= 

哈希后“基本”简直是base64编码"username:password",或你的情况"email:password"。如果有人截取它,只需简单地解码即可获得纯文本用户凭证。所以HTTPS是必须的。

» More information on basic authentication at wikipedia

+0

非常感谢,对于公共API,您是否知道oauth 2.0提供程序的Java的任何实现? – Rom

+0

那是这个问题的重复然后:http://stackoverflow.com/questions/2150801/implementing-oauth-provider-in-java –