当前位置: 首页 > 知识库问答 >
问题:

在 graphql-Spring-启动-启动器中使用不带身份验证的自省查询

空成天
2023-03-14

使用graphql Spring Boot启动程序库https://github.com/graphql-java-kickstart/graphql-spring-boot,是否可以保护所有请求,但只允许带有身份验证的graphql自检查询?

该项目已启用Spring Security以使用OAuth2,因此每个请求都受到保护。

谢谢你的任何提示或帮助。

共有1个答案

袁奇文
2023-03-14

您可以在应用程序中定义属性。yml用于您希望在未经授权的情况下执行的graphql操作。例如,在应用程序中。yml公司-

在WebSecurityConfig.java中,您可以如下所示绑定排除操作变量,@Value("${authorization.excludedoperation}")私有字符串排除操作;

并将excludedOperation定义为GraphQLServletExecutor、GraphQLServletExecutorImpl的实现中的字段。在WebSecurityConfig.java中,从返回GraphQLServletExecutor(替换spqrmvcautoconfiguration . graphql executor)的@Bean方法中,返回GraphQLServletExecutorImpl,并将excludedOperation作为构造函数参数之一。

在 GraphQL 服务器可执行文件中,确保在执行函数中,仅当 GraphQL 请求中的操作名称不包含排除的操作(在您的情况下是自检查询)时,才执行授权。

公共地图

    ExecutionInput input = buildInput(graphQLRequest, nativeRequest, contextFactory, dataLoaderRegistryFactory);

    if (!excludedOperations.contains(graphQLRequest.getOperationName())) {
        
        // check the access_token
        HttpServletRequest request = nativeRequest.getNativeRequest(HttpServletRequest.class);
            bearerTokenAuthorizer.authorize(EMPTY_AUTH_ANNOTATION, request);
            //do your thing

    }

    return graphQL.execute(input).toSpecification();
}
 类似资料:
  • 我正在使用GraphQL进行一个Spring启动项目。我使用的是Graphql-java工具和Graphql-sping-boot-starter。正如您在下面的java配置文件中看到的那样,我设法用Spring Security配置了安全性和会话管理。 现在“/graphql”路径是安全的(只能通过发送请求http头中的“基本http身份验证”或会话令牌()来访问它)。在任何GraphQL操作上

  • 嗨,我正在学习Spring安全,我被困在自定义认证过滤器中。我有以下文件:主应用程序文件: : 我的安全配置文件安全: 最后我的CustomAuthentication filter文件:< code > customauthenticationfilter . Java : 因此,我已经将<code>attemptAuthentication</code>方法放在日志中,但似乎请求没有到达那里。

  • 编辑: org.springframework.security日志: ***但是,如果我在获得有效身份验证后查看日志中的一些请求: 调试2022-01-17 12:31:03.945 IST“将SecurityContextHolder设置为SecurityContextImpl[Authentication=OAuth2AuthenticationToken[Principal=com..se

  • 我正在尝试根据Laravel5.3中的API对用户进行身份验证。它不起作用。一旦用户在登录后重定向,身份验证就不会持久。 路由配置如下: 在LoginController.php我正在使用 成功保存在文件中的登录后,路由的会话不会启动。 所以在路径上:

  • 我正在使用spring security 5和spring boot 2.0.0 我有一个测试配置文件。 我有springBootApplication文件。 安全日志在下面

  • 我已经将我的spring boot应用程序与graphql-spqr-spring-boot-starter https://github.com/leangen/graphql-spqr-spring-boot-starter集成在一起,我需要找到一种方法来禁用graph QL模式自省,因为这是生产中的一个安全问题。