我正在尝试一个安全Webflux配置,在这里我可以使用httpBasic登录一些资源,并使用oAuth登录其他资源
到目前为止,我还不知道该怎么做;似乎,在非反应性的方式中,可以使用某种领域名称或其他什么来实现,但在反应性的方式中,这并不存在,我认为这是因为它与线程的工作流或与web过滤器链中的工作流相关
但是我现在在科特林有以下几点,
return http.httpBasic().authenticationManager {...}
.and()
.oauth2ResourceServer()
.jwt()
.and()
.and()
.authorizeExchange()
.pathMatchers(* noAuthPaths).permitAll()
.pathMatchers(* basicAuthPaths).authenticated()
.anyExchange().access{...}
.and().csrf().disable()
.build()
检查noAuthPaths和basicAuthPaths是否只是字符串模式的数组,最后一个数组(basicAuthPaths)就是我想使用HttpBasic的数组。
如果我在浏览器中调用该资源,并且它列在BasicAuthPath中,我希望登录弹出请求基本身份验证凭据。如果不是的话,我希望是持票人代币。
使用当前配置,如果我在postman中使用Basic Auth调用资源,我可以访问数组中列出的所有资源以及来自任何Exchange方法的资源。此外,如果我在浏览器中输入资源,登录表单不会弹出。
有人知道如何为不同的资源支持这两种策略吗?谢谢
我尝试了这个答案中的建议,但没有成功。
我用Okta作为OAuth IDP创建了一个简单的示例。
在使用带有订单注释的不同bean的情况下,我无法让它运行,总是获得403状态,如果访问一个bean被认为是基本身份验证,它也会要求Okta身份验证。
至少在只有一个Bean配置的情况下,我设法从secureoauthendpoint看到答案,而securebasicendpoint由于访问策略而拒绝。
在这两种情况下,始终调用OAuth身份验证。
感谢@greiker的建议,他在我的示例中添加了一个PR,你可以在这里找到它
在pull请求中,你可以找到我的一些评论,这些评论将用于Okta用例,并推动人们在需要时进行检查,但是建议的更改不会被删除,因为它们涵盖了更广泛的情况。
假设显示的代码来自@配置
类。您可以将配置拆分为多个类,并在第一个类中添加@Order(1)
,在第一个类中配置基本身份验证(最终为这些路径配置permitAll
),并拒绝OAuth URL的连接
然后@order(2)
在第二个配置OAuth路径的地方。
将两者混合在同一个文件中只会让你头疼,但我相信可以通过AuthenticationEntryPoint
完成。
TL;DR 有没有办法将Spring Web Security配置与注释和xml混合使用? 完整故事 对于我们的传统spring web应用程序,我们正在考虑将注释驱动配置用于web安全的一部分。 目前我们所有的网络安全(
当我用HTTPS浏览我的网站时,我面临着复杂的内容问题。我从jQuery调用API,但我没有提到协议,所以假设浏览器应该选择与浏览站点相同的协议(http或https)。我的jquery代码如下所示: 在超文本传输协议中浏览站点并执行所需操作以获取结果时,它可以正常工作(能够从API调用中获取结果)。但是当我浏览站点并尝试在https中获取结果时,我在浏览器控制台中遇到了以下错误。即使我使用htt
我想把春靴和Redis混在一起。以下是依赖项:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent/1.5.10.release https://mvnrepository.com/artifact/org.springframework.data/spring-data-red
问题内容: 我正在努力使网站在HTTPS下可以正常运行。作为其中的一部分,我想确保我们永远不会“破坏锁”。也就是说,我们永远不要在SSL页面上加载非SSL内容,这可能会触发警告或其他指示符,具体取决于浏览器。为了验证这种情况,我想做两件事: 编写Selenium测试以验证各种操作不会破坏锁。 用JS编写日志记录代码,以在用户会话期间检查锁是否已损坏,如果存在则重新登录到服务器。 JS中是否可以使用
我正在处理todo列表,它工作正常,但当我将spring security添加到project并单击添加时,它给出了 2016-07-10 04:32:34.441 WARN 6692---[nio-8080-exec-8]O.s.web.servlet.PageNotFound:不支持请求方法“POST” 这个问题的任何解决方案 app.js 注意,让它工作,它检索所有的任务,但在网络开发人员c
我正在使用Spring Security。我有一个控制器,其中某些方法必须能够被任何用户访问,无论他是否经过身份验证,某些方法必须能够仅访问使用JWT令牌进行身份验证的用户。我已经配置了一些带有acces="permitAll()"的模式,但似乎不起作用。如果我尝试访问localhost:8080/name-of-the-app/services/public/whatever我得到401,我在我