`
Vksnail
  • 浏览: 43481 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

RESTful Web Service 的安全以及性能

 
阅读更多
可扩展性(scalability)和可用性(availability)

custom token authentication

使用一个独一无二的标志,来标示每一次的数据请求。

这个标志有两种用法:1.它可以作为URI的 2.它可以加入到HTTP的请求头中。

@Path("/users/token={token}")
public class UsersResource {
@GET
@Produces("application/xml")
public String getXML(@PathParam("token") String token) {
    if (AuthenticationService.authenticate(token)) {
        return UserBO.getAllXML();
    } else {
        throw new WebApplicationException(401);
    }
  }
}

先检验URI中的标志——Token,如果token变量未通过验证,返回401错误,即未授权。



HTTP basic authentication


即在HTTP请求头中加入一个Authorization: Basic QWxhZGRpbjpvcGVulHNIc2FtZQ==域,就相当于一个证书。对于浏览器而言,会把证书放入缓存中,这样就不必每次都要输入用户名和密码。但这样会导致越权访问,此时由于存在缓存,所以Web Service很难区分请求是否授权。



而且用户名和密码是用Base64 encoding编码的,这个很容易破解,解决这个问题,我们可以用HTTPS(SSL)协议代替HTTP协议。

如果用浏览器访问但没有加入对应的证书,浏览器会出现一个对话框,要求你输入用户名和密码,当用户输入完后,浏览器会再次发送求情。浏览器对401错误会自动处理。

如果使用其他的客户端,则会收到一个401错误。



也可以在刚开始的时候就设置好HTTP请求头,这样就不用每次都输入证书了。

...
HttpClient client = new HttpClient();
client.getState().setCredentials(new AuthScope("www.restfuljava.com ",
443, "realm"), new UsernamePasswordCredentials("username",
"password"));
GetMethod get = new GetMethod("http://www.restfuljava.com/webservice
/users");
get.setDoAuthentication(true);
client.executeMethod(get);
...

不过,这样一来,该客户端就只能用于访问证书对应的网站。




OAuth认证方式。

允许第三方访问用户数据,只通过授权验证方式,即每次访问不需要提供用户名及密码。需要为该认证方式提供另外一个独立的Web Service。

如果不用这种方式,如果一个服务提供者想要别人来使用自己的服务,那就必须向使用者提供相应的证书。



OAuth和OpenID是不同的两种协议。OpenID是指,使用同一个证书,访问不同的网络应用。



性能

简单来说,RESTful web service的性能是由web框架决定的。

High availability意味着0或者最低的运行故障时间。对于一个复杂的web结构,达到0运行故障时间是不可能的。有时候我们不得不关掉整个系统,这是不可避免的。



对于如何减少系统故障运行时间最常用的方法就是,硬件冗余,即当一个机器出了问题,停止工作,另外一个机器会接替他的工作。



Scalability
分享到:
评论

相关推荐

    RESTful Web Service实现转账

    在现代的Web应用程序开发中,RESTful Web Service已经成为构建分布式系统和服务之间通信的重要方式。...在开发过程中,还需要注意错误处理、安全性(如认证、授权)以及性能优化等方面,以提供最佳的用户体验。

    Java+restful+Web+Service实战

    Java RESTful Web Service实战是Java开发领域中一个重要的实践教程,它主要涵盖了使用Java技术和RESTful架构风格来创建高效、可扩展的网络服务。REST(Representational State Transfer)是一种网络应用程序的设计...

    使用Java创建RESTful Web Service

    在IT行业中,RESTful Web Service是一种广泛采用的网络应用程序接口(API)设计风格,它基于Representational State Transfer(表述性状态转移)原则。本教程将深入讲解如何使用Java语言来创建RESTful Web Service。...

    Building a RESTful Web Service with Spring

    安全是RESTful Web服务的重要组成部分,我们将讨论如何实现身份验证: - **HTTP Basic认证**:一种简单的认证机制,客户端将用户名和密码以Base64编码的形式发送到服务器。 - **其他认证方式**:除了Basic认证之外...

    SOAP webserivce 和 RESTful webservice 对比及区别

    SOAP提供了一套完整的框架,包括错误处理、事务管理以及安全标准,如WS-Security、WS-ReliableMessaging等,确保了消息的可靠性和安全性。SOAP消息通常通过HTTP、SMTP等协议传递,并且支持远程过程调用(RPC)模式,...

    RESTful Web Service Primer

    # RESTful Web Service Primer ## 什么是REST? REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于客户端与服务器之间的交互模式。REST架构风格最初由Roy Fielding在其博士...

    RESTful Web Service Primer.pdf

    ### RESTful Web Service Primer #### 一、REST简介 REST(Representational State Transfer)是一种用于设计网络应用程序的架构风格,最初由Roy Fielding在他的博士论文中提出。REST架构风格的核心理念是将网络上...

    Java Restful Web Service,edition2.代码

    【Java Restful Web Service,edition2.代码】这个压缩包文件是关于使用Java开发RESTful Web服务的第二版源码,主要聚焦于JAX-RS 2.0规范的应用。RESTful Web服务是一种广泛用于构建分布式系统的服务架构风格,它...

    Build a RESTful Web service using Jersey and Apache Tomcat.

    总结来说,使用Jersey框架和Apache Tomcat服务器构建RESTful Web服务,不仅可以充分利用Java生态系统的强大功能,还能确保服务的扩展性、可维护性和高性能。通过使用Jersey的注解和API,开发者能够快速创建符合REST...

    Jetty整合RestEasy开发RESTful web service的例程

    Jetty是一款轻量级、高性能的Java Servlet容器,而RestEasy是JAX-RS(Java API for RESTful Web Services)的一个实现,使得创建RESTful服务变得简单。通过将这两者集成,我们可以构建一个快速、灵活且易于维护的Web...

    使用SpringBoot整合jersey 实现Restful web service.同时整合springmvc。

    在本文中,我们将深入探讨如何使用SpringBoot框架与Jersey库整合来实现RESTful Web服务,并同时集成Spring MVC。这将使我们能够构建一个高效、灵活的后端系统,为客户端提供API接口。 首先,SpringBoot是Spring框架...

    Restful-Service-And-Restful-Client-master.zip

    服务端可能基于ASP.NET或ASP.NET Core,这两个平台都支持创建高性能的Web服务。 2. **RESTful设计原则**:遵循REST(Representational State Transfer)原则,将业务逻辑抽象为资源,通过HTTP方法操作这些资源,如...

    Building RESTful Web Services with .NET Core [PDF]

    ### 第九章:扩展 RESTful 服务(Web 服务性能) - **性能优化**:提供多种方法来提高 Web 服务的性能,包括缓存机制、异步编程等。 - **负载均衡**:介绍如何使用负载均衡器来分发请求,提高系统的可用性和响应...

    基于CXF的RESTful Web Service访问服务研究.pdf

    CXF(Celtrix for eXtreme programming)是一个开源的全功能服务框架,被广泛用于构建和开发Web服务,尤其是RESTful Web服务。在现代开发中,RESTful风格因其简单性和易用性而成为一种流行的Web服务架构设计风格。...

    C# 一个简单的 Restful 服务端和 Restful 客户端 Demo

    在IT行业中,RESTful是一种广泛应用于Web服务设计的架构风格,它基于HTTP协议,使得客户端和服务器之间的交互变得...通过实际操作和修改这个Demo,你可以更深入地了解RESTful架构的精髓以及C#在Web服务开发中的应用。

    Web Service 渗透测试.docx

    Web Service 渗透测试是针对机构和组织公开的Web应用、外部IP地址以及Web Service进行的安全测试过程。随着Web Service的广泛应用,它已经成为现代软件架构的重要组成部分,然而,安全问题往往被忽视,导致严重安全...

    Restful C# 服务端篇之实现RestFul Service开发(简单实用)

    9. **安全考虑**:为确保RESTful服务的安全性,可以考虑实现身份验证和授权。ASP.NET Core提供了多种认证和授权机制,如JWT(JSON Web Tokens)或OAuth2。 10. **性能优化**:可以通过缓存、响应压缩、负载均衡和...

    使用 Spring 3 来创建 RESTful Web Services

    **Spring 3 创建 RESTful Web Services 知识点详解** RESTful Web Services 是一种基于 Representational State Transfer(表述性状态转移)架构风格的 Web 应用设计模式,它强调资源的表述和状态转换,常用于构建...

    RESTful Web Services Cookbook

    《RESTful Web Services Cookbook》是一本深入探讨REST(Representational State Transfer)架构风格在Web服务中的应用实践的书籍。REST是一种广泛应用于Web服务的设计模式,它强调通过HTTP协议来实现客户端与服务器...

Global site tag (gtag.js) - Google Analytics