Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用oauth2作用域而不是角色来保护弹簧执行器管理端点

使用oauth2作用域而不是角色来保护弹簧执行器管理端点
EN

Stack Overflow用户
提问于 2017-02-16 09:32:57
回答 2查看 1.7K关注 0票数 3

我最近升级到,这意味着SpringBoot1.5.1,而且我再也不能通过检查oauth2范围来保护管理端点。它以前在中工作过。

这是以前使用过的配置:

代码语言:javascript
运行
AI代码解释
复制
@Configuration
public class SecurityConfiguration extends ResourceServerConfigurerAdapter {

    @Value("${management.context-path}")
    private String managementContextPath;

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests() 
                // some paths I don't want to secure at all
                .antMatchers("/path1/**", "/path2/**").permitAll() 
                // access to health endpoint is open to anyone
                .antMatchers(HttpMethod.GET, managementContextPath + "/health").permitAll() 
                // but app.admin scope is necessary for other management endpoints
                .antMatchers(managementContextPath + "/**").access("#oauth2.hasScope('my-super-scope')") //
                // And we make sure the user is authenticated for all the other cases
                .anyRequest().authenticated();
    }
}

这是配置的重要部分:

代码语言:javascript
运行
AI代码解释
复制
security:
  oauth2:
    client:
      clientId: a-client
      clientSecret: the-client-password
    resource:
      tokenInfoUri: http://my-spring-oauth2-provider/oauth/check_token

management:
  context-path: /my-context
  security:
    enabled: true
endpoints:
  health:
    sensitive: false

当我试图在/my-context/refresh上发布时,我得到了HTTP401“需要完全身份验证”,尽管我提供了一个有效的OAuth2令牌

通过查看日志,我发现我的请求被认为是匿名的,检查FilterChainProxy日志时发现OAuth2AuthenticationProcessingFilter没有被调用。在深入研究我发现可以更改oauth2资源筛选器的顺序。之后,我尝试了一下,现在我有了一个OAuth2身份验证,是的,完成了对吧?

哼,不,现在我有一个Access is denied. User must have one of the these roles: ACTUATOR错误。

我尝试了其他一些事情,包括禁用管理安全性(但我的规则不适用,访问对每个人都是开放的),使用(ugh) @Order (不变),甚至,瞧,阅读和应用文件说:

若要重写应用程序访问规则,请添加类型为@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)的@Bean,如果不想重写执行器访问规则,则使用@Order(ManagementServerProperties.ACCESS_OVERRIDE_ORDER);如果要重写执行器访问规则,则使用@Order(ManagementServerProperties.ACCESS_OVERRIDE_ORDER)。

但是这并没有改变错误:User must have one of these roles: ACTUATOR

有人有解决办法/想法吗?

更新:我也在使用Zuul,所以我最终创建了一个特定的zuul路由到我需要的端点(在我的例子中是云总线刷新),在另一个没有公开的后端服务上不受保护,并使用oauth2保护该zuul路由。

不过,我还是把这个问题留在这里,如果有人能找到解决办法的话,可能会很有用。

EN

回答 2

Stack Overflow用户

发布于 2017-06-19 12:46:04

可能是明显的船长,但请看http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html。您可以使用management.security.roles覆盖该角色,只需添加任何您的Oauth2凭据所具有的角色。

票数 2
EN

Stack Overflow用户

发布于 2018-10-10 02:13:37

我也面临着这个问题。我使用的解决方法是在我定义的新端点上公开执行器操作,只需调用执行器bean来处理请求。

例如,为了用Oauth2保护/my/refresh,我只是在{任何-api-前缀}/refreshConfig上公开了一个新的资源,并为这个URL在rest控制器上公开了一个请求处理程序;在rest控制器中,我连接了RefreshEndpoint bean,在请求处理程序中我只调用了refreshEndpoint.refresh()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42280956

复制
相关文章
使用HSB而不是RGB来定义颜色
有多种方法可以在代码中定义颜色。最常用的方法是指定三种基色的值 - 红色、绿色和蓝色 (RGB)。本文通过指定色调、饱和度和亮度 (HSB) 的值来探索替代机制的使用。可以以更直观的方式使用 HSB 属性来创建颜色搭配良好的调色板。
韦弦zhy
2023/01/06
2.7K0
使用HSB而不是RGB来定义颜色
Spring Security OAuth 2开发者指南译
这是用户指南的支持OAuth 2.0。对于OAuth 1.0,一切都是不同的,所以看到它的用户指南。
Dream城堡
2018/09/10
2.1K0
Spring Security OAuth 2开发者指南
这个用户指南支持OAuth 2.0。对于OAuth 1.0,一切都是不同的,所以去这里看它的用户指南。
gemron的空间
2019/11/04
2K0
使用OAuth2保护API
OAuth2是一种授权框架,用于保护API和其他Web资源。它使客户端(应用程序或服务)可以安全地访问受保护的资源,而无需暴露用户凭据(例如用户名和密码)。
堕落飞鸟
2023/04/13
1.1K0
Spring Cloud 系列-执行器端点(Endpoint)
强推一波:https://segmentfault.com/ls/1650000011386794
3号攻城狮
2018/07/15
1.4K0
Spring Cloud 系列-执行器端点(Endpoint)
springsecurity oauth2 端点安全源码
默认配置 AuthorizationServerSecurityConfigurer ... // 客户端默认使用BASIC AUTH认证,设置此项兼容表单认证(参数传递客户端ID、密码) private boolean allowFormAuthenticationForClients = false; // 默认禁止访问 private String tokenKeyAccess = "denyAll()"; // 默认禁止访问/oauth/check_token端点 private String ch
路过君
2020/06/19
5790
使用DDD来构建你的REST API,而不是CRUD
REST围绕着资源这个概念而构建的,然后用URI来表示。然后一个HTTP动词和资源URI组合起来对指定资源进行HTTP调用来执行操作。大多数REST框架提供了指定资源名称的生成器,框架围绕着它来生成脚
ImportSource
2018/04/03
2.2K0
使用DDD来构建你的REST API,而不是CRUD
深度解析 Spring Security:身份验证、授权、OAuth2 和 JWT 身份验证的完整指南
Spring Security 是一个用于保护基于 Java 的应用程序的框架。它是一个功能强大且高度可定制的身份验证和访问控制框架,可以轻松地集成到各种应用程序中,包括 Web 应用程序和 RESTful Web 服务。 Spring Security 提供了全面的安全解决方案,用于身份验证和授权,并且可以用于在 Web 和方法级别上保护应用程序。
小万哥
2023/07/31
4880
深度解析 Spring Security:身份验证、授权、OAuth2 和 JWT 身份验证的完整指南
Spring Cloud Security使用OAuth2授权服务器来保护API
首先,我们需要配置OAuth2授权服务器。在本示例中,我们将使用Spring Boot和Spring Security来配置OAuth2授权服务器。
堕落飞鸟
2023/04/13
1.1K0
【iOS开发】使用 protocol 与 extension 来限制函数作用域
今天碰到这样一个场景,我需要一个仅仅用来展示网页的页面,那么在 iOS 9 中,我可以使用 SFSafariViewController,而在 iOS 8 及之前版本中,我会使用一个 WebView 来占据整个视图空间,来做这件事。
KyXu
2019/04/11
5560
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/06/26
3670
何时使用Kafka而不是RabbitMQ
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
wayn
2023/08/09
1K0
何时使用MongoDB而不是MySql
ADAMS弹簧的使用
针对带有弹簧的结构无法直接将弹簧模型导入并具备对应的效果,ADAMS View中提供了弹簧模块,可以直接在软件中创建弹簧,本文主要通过案例简单介绍弹簧的使用方法。
学识家
2022/05/05
1.2K0
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景
wayn
2023/08/28
3230
何时使用Elasticsearch而不是MySql
Identity Server 4 预备知识 -- OAuth 2.0 简介
OAuth 2.0是一个委托协议, 它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源, 注意是代表这些人, 而不是假冒或模仿这些人. 这个应用从资源的所有者那里获得到授权(Authorization)和access token, 随后就可以使用这个access token来访问资源.
solenovex
2022/05/10
8830
Identity Server 4 预备知识 -- OAuth 2.0 简介
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/08/28
2710
何时使用Kafka而不是RabbitMQ
AI将为消费者隐私提供保护,而不是威胁。
人工智能的应用正在飞速发展。根据世界知识产权组织(WIPO)的数据,与人工智能相关的专利申请量在2013年至2017年间增加了近三倍,达到55000多件。专利活动的增加反映了人工智能领域目前正在进行的淘金热。我们可以期待它在每个行业中都将有一席之地。
AiTechYun
2019/05/13
4540
AI将为消费者隐私提供保护,而不是威胁。
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景。本文将从以下几个方面对它们进行比较和分析:
wayn
2023/08/09
7160
何时使用Elasticsearch而不是MySql
微服务架构之Spring Boot(七十二)
您应该像使用任何其他敏感URL一样注意保护HTTP端点。如果存在Spring安全性,则默认使用Spring安全性内容协商策略来保护端点。例如,
用户1289394
2022/05/23
1.2K0
要用Identity Server 4 -- OAuth 2.0 超级简介
OAuth 2.0 简介 OAuth有一些定义: OAuth 2.0是一个委托协议, 它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源, 注意是代表这些人, 而不是假冒或模仿这些人. 这个应用从资源的所有者那里获得到授权(Authorization)和access token, 随后就可以使用这个access token来访问资源. (这里提到的假冒或模仿就是指在客户端复制一份用户名和密码,从而获取相应的权限)。 OAuth 2.0是一个开放的协议, 它允许使用简单和标准的方法从Web,
solenovex
2018/07/04
1.2K0

相似问题

更好的方法来轮询弹簧引导执行器端点(流而不是轮询?)

10

如何在Spring 2中使用角色保护执行器端点?

30

无法保护Spring引导管理执行器端点

12

弹簧启动执行器端点覆盖

25

弹簧引导执行器健康端点

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文