每个 Java 软件架构师都应该知道的 20 件事
使用 CloudFormation 在 AWS API 网关上设置 CORS 和集成
跨源资源共享(CORS) 是网络浏览器使用的一种基本安全机制,允许从域、协议或端口不同的源访问服务器资源。 在 API 领域,尤其是在使用 AWS API Gateway 时,配置 CORS 对于方便来自不同域的网络应用程序的访问,同时降低潜在的安全风险至关重要。
本文旨在提供有关 CORS 和通过 CloudFormation 集成 AWS API Gateway 的全面指导。它将强调 CORS 的重要性、包括承载令牌在内的授权开发,以及选择可选方法代替标准 GET 请求的优势。
CORS 为何重要
在开发用于跨域访问的应用程序接口时,CORS 对于减少未经授权的访问至关重要。通过划定允许与您的应用程序接口交互的特定域,您可以保护您的资源免受 跨站请求伪造(CSRF)攻击 ,同时允许有效的跨源请求。
CORS 的优点
- 安全性 :CORS 在规范哪些外部域可以访问您的资源方面起着至关重要的作用,从而保护您的应用程序接口免受有害的跨源请求的影响。
- 灵活性 :CORS 允许您为不同来源定义不同级别的访问(如
GET
、POST
、DELETE
等方法),从而根据您的具体要求提供适应性。 - 用户体验 :实施 CORS 可让用户无缝访问多个域的资源,而不会遇到与访问相关的问题,从而增强用户体验。
在继续设置 CORS 之前,我们需要了解使用可选方法而非 GET
的必要性。这种比较有助于快速比较在 API 请求中使用 GET
与可选方法 (PUT
、 POST
、 OPTIONS
)的不同之处。
原因 | GET | 可选方法(POST、PUT、OPTIONS) |
安全 | GET 请求在浏览器地址栏中可见,可以被缓存,因此对敏感信息的安全性较低。 | POST 和 PUT 等可选方法在地址栏中不可见,也不会被缓存,从而为敏感数据提供更高的安全性。 |
灵活性 | GET 请求仅限于通过 URL 发送数据,这就限制了可发送数据的复杂性和大小。 | 可选方法允许在请求体中发送复杂的数据结构,提供了更大的灵活性。 |
无效性和安全性 | GET 是幂等的,被认为是安全的,这意味着它不会修改资源的状态。 | POST 和 PUT 用于修改数据的操作,OPTIONS 用于检查可用的方法。 |
CORS 预检 | GET 请求通常不用于 CORS 预检。 | OPTIONS 请求对 CORS 飞行前检查至关重要,它能确保实际请求得以提出。 |
比较 POST 和 PUT 方法的目的和行为:
方面 | POST | PUT |
目的 | 用于创建新资源。 | 用于更新现有资源或创建不存在的资源。 |
幂等性 | 不可幂等,多个相同请求可能会创建多个资源。 | 惰性;多次相同的请求不会改变最初的结果。 |
资源位置 | 服务器决定资源的 URI,通常会在响应中返回。 | 客户指定资源的 URI。 |
数据处理 | 通常用于客户端事先不知道资源 URI 的情况。 | 通常用于客户端知道资源的 URI 并希望更新时。 |
常用案例 | 创建新记录,如提交表单创建新用户。 | 更新现有记录,如编辑用户信息。 |
缓存 | 对 POST 请求的响应一般不会缓存。 | PUT 请求的响应可以缓存,因为请求的结果应该是相同的。 |
回应 | 通常返回状态代码 201(已创建),并带有指向新创建资源的位置标头。 | 如果更新成功,通常会返回状态代码 200(OK)或 204(无内容)。 |
使用 CloudFormation 在 AWS API 网关中设置 CORS
在 AWS API Gateway 中配置 CORS 可通过 AWS 管理控制台手动完成;不过,使用 CloudFormation 自动完成此过程可增强可扩展性和一致性。
以下是详细的分步指南:
1.在 CloudFormation 中定义 API 网关
首先在 CloudFormation 模板中定义 API 网关:
2.创建资源和方法
定义 API 的资源和方法。例如,为 /items
创建一个资源和一个 GET
方法:
3.配置 CORS
接下来,通过指定必要的标头为您的 API 方法配置 CORS:
纳入授权
在 API 方法中实施授权可确保只有经过身份验证和授权的用户才能访问特定资源。AWS API Gateway 提供各种授权选项,包括 AWS Lambda 授权器、Cognito 用户池和 IAM 角色。
实施后,API 在 AWS 中的外观如下:
整合请求:
API 网关文档可在此处找到: 亚马逊 API 。
结论
通过 CloudFormation 建立 CORS 并集成 AWS API Gateway 可为管理 API 访问提供高效且可重复的方法。通过精心设置 CORS,您可以确保 API 保持安全 ,并且只有经过许可的来源才能访问。通过限制只有获得授权的用户才能访问,结合授权增加了一层安全性。 此外,评估利用可选方法而非 GET 请求的优势,可确保您的应用程序接口既能保持安全性,又能保持管理复杂操作所需的灵活性。
实施这些配置不仅能增强应用程序接口的安全性和性能,还能提升终端用户的整体体验,促进无缝跨源交互和敏感信息的适当管理。
原文链接: https://dzone.com/articles/setting-up-cors-and-integration-on-aws-api-gateway