CSRF Support in springdoc-openapi swagger-ui



当使用与springdoc-openapi捆绑在一起的请求时,有没有办法自动将CSRF标头包含在从swagger ui发出的请求中?

类似的解决方案似乎在 springfox (GitHub( 中实现,但我没有找到关于是否可以使用 springdoc-openapi 完成此操作的信息。

CSRF 令牌默认受支持,如果您使用的是标准标头。例如使用 Spring 安全标头(

如果需要 CSRF Token,swagger-ui 会在每次 HTTP 请求期间自动发送新的 XSRF-TOKEN。

也就是说,如果你的XSRF-TOKEN不是基于标准的,你可以使用requestInterceptor手动捕获最新的xsrf令牌,并通过spring资源转换器以编程方式将最新的xsrf令牌附加到请求中:

  • https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md#requestinterceptor

此外,随着时间的推移,CSRF 变得越来越不重要,因为浏览器添加了用户代理级别的支持,以控制跨源请求 cookie 包含。

从 springdoc-openapi 的 v1.4.4 版本开始,添加了一个新属性来启用 CSRF 支持,同时使用标准标头名称:

springdoc.swagger-ui.csrf.enabled=true

SwaggerUI 默认不包含 CSRF-TOKEN 到请求中

如果你使用的是 React,你可以重用以下代码来手动包含它:

import React from 'react';
import SwaggerUI from "swagger-ui-react"
import "swagger-ui-react/swagger-ui.css"
import Cookies from 'universal-cookie';
const cookies = new Cookies();
const DocsPage = () => (
<SwaggerUI url="/v2/api-docs" requestInterceptor={(request) => {
request.headers['X-XSRF-TOKEN'] = cookies.get("XSRF-TOKEN")
}}/>
);
export default DocsPage;

相关内容

  • 没有找到相关文章

最新更新