Skip to content

Commit dd78ec7

Browse files
authored
feat(webflux): Support setRequest for ReactiveInjectSecurityContextWebFilter (#356)
1 parent 9146326 commit dd78ec7

File tree

5 files changed

+8
-6
lines changed

5 files changed

+8
-6
lines changed

cosec-webflux/src/main/kotlin/me/ahoo/cosec/webflux/ReactiveInjectSecurityContextWebFilter.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*/
1313
package me.ahoo.cosec.webflux
1414

15+
import me.ahoo.cosec.context.RequestSecurityContexts.setRequest
1516
import me.ahoo.cosec.context.SecurityContextParser
1617
import me.ahoo.cosec.context.request.RequestParser
1718
import me.ahoo.cosec.webflux.ReactiveSecurityContexts.writeSecurityContext
@@ -32,12 +33,12 @@ import reactor.kotlin.core.publisher.toMono
3233
class ReactiveInjectSecurityContextWebFilter(
3334
private val requestParser: RequestParser<ServerWebExchange>,
3435
private val securityContextParser: SecurityContextParser
35-
) :
36-
WebFilter, Ordered {
36+
) : WebFilter, Ordered {
3737

3838
override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
3939
val request = requestParser.parse(exchange)
4040
val securityContext = securityContextParser.ensureParse(request)
41+
securityContext.setRequest(request)
4142
exchange.mutate()
4243
.principal(securityContext.principal.toMono())
4344
.build().let {

cosec-webflux/src/main/kotlin/me/ahoo/cosec/webflux/ReactiveSecurityFilter.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ abstract class ReactiveSecurityFilter(
5656
tokenVerificationException = verificationException
5757
SimpleSecurityContext.anonymous()
5858
}
59-
exchange.setSecurityContext(securityContext)
6059
securityContext.setRequest(request)
60+
exchange.setSecurityContext(securityContext)
6161
return authorization.authorize(request, securityContext)
6262
.flatMap { authorizeResult ->
6363
if (authorizeResult.authorized) {

cosec-webmvc/src/main/kotlin/me/ahoo/cosec/servlet/AbstractAuthorizationInterceptor.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,9 @@ abstract class AbstractAuthorizationInterceptor(
5151
tokenVerificationException = verificationException
5252
SimpleSecurityContext.anonymous()
5353
}
54-
54+
securityContext.setRequest(request)
5555
SecurityContextHolder.setContext(securityContext)
5656
servletRequest.setSecurityContext(securityContext)
57-
securityContext.setRequest(request)
5857
return authorization.authorize(request, securityContext)
5958
.map {
6059
if (!it.authorized) {

cosec-webmvc/src/main/kotlin/me/ahoo/cosec/servlet/InjectSecurityContextFilter.kt

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import jakarta.servlet.ServletRequest
1919
import jakarta.servlet.ServletResponse
2020
import jakarta.servlet.http.HttpServletRequest
2121
import me.ahoo.cosec.api.context.SecurityContext
22+
import me.ahoo.cosec.context.RequestSecurityContexts.setRequest
2223
import me.ahoo.cosec.context.SecurityContextHolder
2324
import me.ahoo.cosec.context.SecurityContextParser
2425
import me.ahoo.cosec.context.request.RequestParser
@@ -47,6 +48,7 @@ class InjectSecurityContextFilter(
4748
val httpServletRequest = servletRequest as HttpServletRequest
4849
val request = requestParser.parse(servletRequest)
4950
val securityContext: SecurityContext = securityContextParser.ensureParse(request)
51+
securityContext.setRequest(request)
5052
SecurityContextHolder.setContext(securityContext)
5153
httpServletRequest.setSecurityContext(securityContext)
5254
}

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# limitations under the License.
1212
#
1313
group=me.ahoo.cosec
14-
version=2.7.2
14+
version=2.7.3
1515
description=RBAC-based And Policy-based Multi-Tenant Reactive Security Framework.
1616
website=https://github.com/Ahoo-Wang/CoSec
1717
issues=https://github.com/Ahoo-Wang/CoSec/issues

0 commit comments

Comments
 (0)