Procházet zdrojové kódy

Move Core Access API

Issue gh-17847
Josh Cummings před 3 týdny
rodič
revize
eedcec9d5c
100 změnil soubory, kde provedl 327 přidání a 14 odebrání
  1. 42 0
      access/spring-security-access.gradle
  2. 0 0
      access/src/main/java/org/springframework/security/access/AccessDecisionManager.java
  3. 0 0
      access/src/main/java/org/springframework/security/access/AccessDecisionVoter.java
  4. 0 0
      access/src/main/java/org/springframework/security/access/AfterInvocationProvider.java
  5. 0 0
      access/src/main/java/org/springframework/security/access/ConfigAttribute.java
  6. 0 0
      access/src/main/java/org/springframework/security/access/SecurityConfig.java
  7. 0 0
      access/src/main/java/org/springframework/security/access/SecurityMetadataSource.java
  8. 0 0
      access/src/main/java/org/springframework/security/access/annotation/AnnotationMetadataExtractor.java
  9. 0 0
      access/src/main/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSource.java
  10. 0 0
      access/src/main/java/org/springframework/security/access/annotation/Jsr250SecurityConfig.java
  11. 0 0
      access/src/main/java/org/springframework/security/access/annotation/Jsr250Voter.java
  12. 0 0
      access/src/main/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSource.java
  13. 23 0
      access/src/main/java/org/springframework/security/access/annotation/package-info.java
  14. 0 0
      access/src/main/java/org/springframework/security/access/event/AbstractAuthorizationEvent.java
  15. 0 0
      access/src/main/java/org/springframework/security/access/event/AuthenticationCredentialsNotFoundEvent.java
  16. 0 0
      access/src/main/java/org/springframework/security/access/event/AuthorizationFailureEvent.java
  17. 0 0
      access/src/main/java/org/springframework/security/access/event/AuthorizedEvent.java
  18. 0 0
      access/src/main/java/org/springframework/security/access/event/LoggerListener.java
  19. 0 0
      access/src/main/java/org/springframework/security/access/event/PublicInvocationEvent.java
  20. 0 0
      access/src/main/java/org/springframework/security/access/event/package-info.java
  21. 0 0
      access/src/main/java/org/springframework/security/access/expression/method/AbstractExpressionBasedMethodConfigAttribute.java
  22. 0 0
      access/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedAnnotationAttributeFactory.java
  23. 0 0
      access/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedPostInvocationAdvice.java
  24. 0 0
      access/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedPreInvocationAdvice.java
  25. 0 0
      access/src/main/java/org/springframework/security/access/expression/method/PostInvocationExpressionAttribute.java
  26. 0 0
      access/src/main/java/org/springframework/security/access/expression/method/PreInvocationExpressionAttribute.java
  27. 25 0
      access/src/main/java/org/springframework/security/access/expression/method/package-info.java
  28. 0 0
      access/src/main/java/org/springframework/security/access/intercept/AbstractSecurityInterceptor.java
  29. 0 0
      access/src/main/java/org/springframework/security/access/intercept/AfterInvocationManager.java
  30. 0 0
      access/src/main/java/org/springframework/security/access/intercept/AfterInvocationProviderManager.java
  31. 0 0
      access/src/main/java/org/springframework/security/access/intercept/InterceptorStatusToken.java
  32. 0 0
      access/src/main/java/org/springframework/security/access/intercept/MethodInvocationPrivilegeEvaluator.java
  33. 0 0
      access/src/main/java/org/springframework/security/access/intercept/NullRunAsManager.java
  34. 0 0
      access/src/main/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProvider.java
  35. 0 0
      access/src/main/java/org/springframework/security/access/intercept/RunAsManager.java
  36. 0 0
      access/src/main/java/org/springframework/security/access/intercept/RunAsManagerImpl.java
  37. 0 0
      access/src/main/java/org/springframework/security/access/intercept/RunAsUserToken.java
  38. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptor.java
  39. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisor.java
  40. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aopalliance/package-info.java
  41. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aspectj/AspectJCallback.java
  42. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptor.java
  43. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aspectj/MethodInvocationAdapter.java
  44. 0 0
      access/src/main/java/org/springframework/security/access/intercept/aspectj/package-info.java
  45. 0 0
      access/src/main/java/org/springframework/security/access/intercept/package-info.java
  46. 0 0
      access/src/main/java/org/springframework/security/access/method/AbstractFallbackMethodSecurityMetadataSource.java
  47. 0 0
      access/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java
  48. 0 0
      access/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java
  49. 0 0
      access/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java
  50. 0 0
      access/src/main/java/org/springframework/security/access/method/MethodSecurityMetadataSource.java
  51. 0 0
      access/src/main/java/org/springframework/security/access/method/P.java
  52. 0 0
      access/src/main/java/org/springframework/security/access/method/package-info.java
  53. 27 0
      access/src/main/java/org/springframework/security/access/package-info.java
  54. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PostInvocationAdviceProvider.java
  55. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PostInvocationAttribute.java
  56. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PostInvocationAuthorizationAdvice.java
  57. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PreInvocationAttribute.java
  58. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PreInvocationAuthorizationAdvice.java
  59. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PreInvocationAuthorizationAdviceVoter.java
  60. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PrePostAdviceReactiveMethodInterceptor.java
  61. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PrePostAnnotationSecurityMetadataSource.java
  62. 0 0
      access/src/main/java/org/springframework/security/access/prepost/PrePostInvocationAttributeFactory.java
  63. 27 0
      access/src/main/java/org/springframework/security/access/prepost/package-info.java
  64. 0 0
      access/src/main/java/org/springframework/security/access/vote/AbstractAccessDecisionManager.java
  65. 0 0
      access/src/main/java/org/springframework/security/access/vote/AbstractAclVoter.java
  66. 0 0
      access/src/main/java/org/springframework/security/access/vote/AffirmativeBased.java
  67. 0 0
      access/src/main/java/org/springframework/security/access/vote/AuthenticatedVoter.java
  68. 0 0
      access/src/main/java/org/springframework/security/access/vote/ConsensusBased.java
  69. 0 0
      access/src/main/java/org/springframework/security/access/vote/RoleHierarchyVoter.java
  70. 0 0
      access/src/main/java/org/springframework/security/access/vote/RoleVoter.java
  71. 0 0
      access/src/main/java/org/springframework/security/access/vote/UnanimousBased.java
  72. 0 0
      access/src/main/java/org/springframework/security/access/vote/package-info.java
  73. 0 0
      access/src/test/java/org/springframework/security/access/AuthenticationCredentialsNotFoundEventTests.java
  74. 0 0
      access/src/test/java/org/springframework/security/access/AuthorizationFailureEventTests.java
  75. 0 0
      access/src/test/java/org/springframework/security/access/AuthorizedEventTests.java
  76. 36 0
      access/src/test/java/org/springframework/security/access/ITargetObject.java
  77. 53 0
      access/src/test/java/org/springframework/security/access/OtherTargetObject.java
  78. 0 0
      access/src/test/java/org/springframework/security/access/SecurityConfigTests.java
  79. 81 0
      access/src/test/java/org/springframework/security/access/TargetObject.java
  80. 0 0
      access/src/test/java/org/springframework/security/access/annotation/BusinessService.java
  81. 0 0
      access/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java
  82. 0 0
      access/src/test/java/org/springframework/security/access/annotation/Entity.java
  83. 0 0
      access/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java
  84. 0 0
      access/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java
  85. 0 0
      access/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java
  86. 0 0
      access/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java
  87. 0 0
      access/src/test/java/org/springframework/security/access/annotation/RequireAdminRole.java
  88. 0 0
      access/src/test/java/org/springframework/security/access/annotation/RequireUserRole.java
  89. 1 2
      access/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java
  90. 0 0
      access/src/test/java/org/springframework/security/access/annotation/sec2150/CrudRepository.java
  91. 0 0
      access/src/test/java/org/springframework/security/access/annotation/sec2150/MethodInvocationFactory.java
  92. 0 0
      access/src/test/java/org/springframework/security/access/annotation/sec2150/PersonRepository.java
  93. 0 0
      access/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java
  94. 0 0
      access/src/test/java/org/springframework/security/access/expression/method/ExpressionBasedPreInvocationAdviceTests.java
  95. 0 0
      access/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java
  96. 0 0
      access/src/test/java/org/springframework/security/access/expression/method/MethodSecurityEvaluationContextTests.java
  97. 12 12
      access/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java
  98. 0 0
      access/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java
  99. 0 0
      access/src/test/java/org/springframework/security/access/expression/method/SecurityRules.java
  100. 0 0
      access/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java

+ 42 - 0
access/spring-security-access.gradle

@@ -0,0 +1,42 @@
+apply plugin: 'io.spring.convention.spring-module'
+
+dependencies {
+	management platform(project(":spring-security-dependencies"))
+	api project(':spring-security-crypto')
+	api project(':spring-security-core')
+	api 'org.springframework:spring-aop'
+	api 'org.springframework:spring-beans'
+	api 'org.springframework:spring-context'
+	api 'org.springframework:spring-core'
+	api 'org.springframework:spring-expression'
+	api 'io.micrometer:micrometer-observation'
+
+	optional 'com.fasterxml.jackson.core:jackson-databind'
+	optional 'io.micrometer:context-propagation'
+	optional 'io.projectreactor:reactor-core'
+	optional 'jakarta.annotation:jakarta.annotation-api'
+	optional 'org.aspectj:aspectjrt'
+	optional 'org.springframework:spring-jdbc'
+	optional 'org.springframework:spring-tx'
+	optional 'org.jetbrains.kotlinx:kotlinx-coroutines-reactor'
+
+	testImplementation 'commons-collections:commons-collections'
+	testImplementation 'io.projectreactor:reactor-test'
+	testImplementation "org.assertj:assertj-core"
+	testImplementation "org.junit.jupiter:junit-jupiter-api"
+	testImplementation "org.junit.jupiter:junit-jupiter-params"
+	testImplementation "org.junit.jupiter:junit-jupiter-engine"
+	testImplementation "org.mockito:mockito-core"
+	testImplementation "org.mockito:mockito-junit-jupiter"
+	testImplementation "org.springframework:spring-core-test"
+	testImplementation "org.springframework:spring-test"
+	testImplementation 'org.skyscreamer:jsonassert'
+	testImplementation 'org.springframework:spring-test'
+	testImplementation 'org.jetbrains.kotlin:kotlin-reflect'
+	testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
+	testImplementation 'io.mockk:mockk'
+
+	testRuntimeOnly 'org.hsqldb:hsqldb'
+	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
+}
+

+ 0 - 0
core/src/main/java/org/springframework/security/access/AccessDecisionManager.java → access/src/main/java/org/springframework/security/access/AccessDecisionManager.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/AccessDecisionVoter.java → access/src/main/java/org/springframework/security/access/AccessDecisionVoter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/AfterInvocationProvider.java → access/src/main/java/org/springframework/security/access/AfterInvocationProvider.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/ConfigAttribute.java → access/src/main/java/org/springframework/security/access/ConfigAttribute.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/SecurityConfig.java → access/src/main/java/org/springframework/security/access/SecurityConfig.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/SecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/SecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/annotation/AnnotationMetadataExtractor.java → access/src/main/java/org/springframework/security/access/annotation/AnnotationMetadataExtractor.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/annotation/Jsr250SecurityConfig.java → access/src/main/java/org/springframework/security/access/annotation/Jsr250SecurityConfig.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/annotation/Jsr250Voter.java → access/src/main/java/org/springframework/security/access/annotation/Jsr250Voter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSource.java


+ 23 - 0
access/src/main/java/org/springframework/security/access/annotation/package-info.java

@@ -0,0 +1,23 @@
+/*
+ * Copyright 2004-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Support for JSR-250 and Spring Security {@code @Secured} annotations.
+ */
+@NullMarked
+package org.springframework.security.access.annotation;
+
+import org.jspecify.annotations.NullMarked;

+ 0 - 0
core/src/main/java/org/springframework/security/access/event/AbstractAuthorizationEvent.java → access/src/main/java/org/springframework/security/access/event/AbstractAuthorizationEvent.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/event/AuthenticationCredentialsNotFoundEvent.java → access/src/main/java/org/springframework/security/access/event/AuthenticationCredentialsNotFoundEvent.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/event/AuthorizationFailureEvent.java → access/src/main/java/org/springframework/security/access/event/AuthorizationFailureEvent.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/event/AuthorizedEvent.java → access/src/main/java/org/springframework/security/access/event/AuthorizedEvent.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/event/LoggerListener.java → access/src/main/java/org/springframework/security/access/event/LoggerListener.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/event/PublicInvocationEvent.java → access/src/main/java/org/springframework/security/access/event/PublicInvocationEvent.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/event/package-info.java → access/src/main/java/org/springframework/security/access/event/package-info.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/expression/method/AbstractExpressionBasedMethodConfigAttribute.java → access/src/main/java/org/springframework/security/access/expression/method/AbstractExpressionBasedMethodConfigAttribute.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedAnnotationAttributeFactory.java → access/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedAnnotationAttributeFactory.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedPostInvocationAdvice.java → access/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedPostInvocationAdvice.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedPreInvocationAdvice.java → access/src/main/java/org/springframework/security/access/expression/method/ExpressionBasedPreInvocationAdvice.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/expression/method/PostInvocationExpressionAttribute.java → access/src/main/java/org/springframework/security/access/expression/method/PostInvocationExpressionAttribute.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/expression/method/PreInvocationExpressionAttribute.java → access/src/main/java/org/springframework/security/access/expression/method/PreInvocationExpressionAttribute.java


+ 25 - 0
access/src/main/java/org/springframework/security/access/expression/method/package-info.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright 2004-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Implementation of expression-based method security.
+ *
+ * @since 3.0
+ */
+@NullMarked
+package org.springframework.security.access.expression.method;
+
+import org.jspecify.annotations.NullMarked;

+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/AbstractSecurityInterceptor.java → access/src/main/java/org/springframework/security/access/intercept/AbstractSecurityInterceptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/AfterInvocationManager.java → access/src/main/java/org/springframework/security/access/intercept/AfterInvocationManager.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/AfterInvocationProviderManager.java → access/src/main/java/org/springframework/security/access/intercept/AfterInvocationProviderManager.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/InterceptorStatusToken.java → access/src/main/java/org/springframework/security/access/intercept/InterceptorStatusToken.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/MethodInvocationPrivilegeEvaluator.java → access/src/main/java/org/springframework/security/access/intercept/MethodInvocationPrivilegeEvaluator.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/NullRunAsManager.java → access/src/main/java/org/springframework/security/access/intercept/NullRunAsManager.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProvider.java → access/src/main/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProvider.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/RunAsManager.java → access/src/main/java/org/springframework/security/access/intercept/RunAsManager.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/RunAsManagerImpl.java → access/src/main/java/org/springframework/security/access/intercept/RunAsManagerImpl.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/RunAsUserToken.java → access/src/main/java/org/springframework/security/access/intercept/RunAsUserToken.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptor.java → access/src/main/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisor.java → access/src/main/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisor.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aopalliance/package-info.java → access/src/main/java/org/springframework/security/access/intercept/aopalliance/package-info.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aspectj/AspectJCallback.java → access/src/main/java/org/springframework/security/access/intercept/aspectj/AspectJCallback.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptor.java → access/src/main/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aspectj/MethodInvocationAdapter.java → access/src/main/java/org/springframework/security/access/intercept/aspectj/MethodInvocationAdapter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/aspectj/package-info.java → access/src/main/java/org/springframework/security/access/intercept/aspectj/package-info.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/intercept/package-info.java → access/src/main/java/org/springframework/security/access/intercept/package-info.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/AbstractFallbackMethodSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/method/AbstractFallbackMethodSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/method/AbstractMethodSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/MethodSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/method/MethodSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/P.java → access/src/main/java/org/springframework/security/access/method/P.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/method/package-info.java → access/src/main/java/org/springframework/security/access/method/package-info.java


+ 27 - 0
access/src/main/java/org/springframework/security/access/package-info.java

@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Core access-control related code, including security metadata related classes,
+ * interception code, access control annotations, EL support and voter-based
+ * implementations of the central
+ * {@link org.springframework.security.access.AccessDecisionManager AccessDecisionManager}
+ * interface.
+ */
+@NullMarked
+package org.springframework.security.access;
+
+import org.jspecify.annotations.NullMarked;

+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PostInvocationAdviceProvider.java → access/src/main/java/org/springframework/security/access/prepost/PostInvocationAdviceProvider.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PostInvocationAttribute.java → access/src/main/java/org/springframework/security/access/prepost/PostInvocationAttribute.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PostInvocationAuthorizationAdvice.java → access/src/main/java/org/springframework/security/access/prepost/PostInvocationAuthorizationAdvice.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PreInvocationAttribute.java → access/src/main/java/org/springframework/security/access/prepost/PreInvocationAttribute.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PreInvocationAuthorizationAdvice.java → access/src/main/java/org/springframework/security/access/prepost/PreInvocationAuthorizationAdvice.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PreInvocationAuthorizationAdviceVoter.java → access/src/main/java/org/springframework/security/access/prepost/PreInvocationAuthorizationAdviceVoter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PrePostAdviceReactiveMethodInterceptor.java → access/src/main/java/org/springframework/security/access/prepost/PrePostAdviceReactiveMethodInterceptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PrePostAnnotationSecurityMetadataSource.java → access/src/main/java/org/springframework/security/access/prepost/PrePostAnnotationSecurityMetadataSource.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/prepost/PrePostInvocationAttributeFactory.java → access/src/main/java/org/springframework/security/access/prepost/PrePostInvocationAttributeFactory.java


+ 27 - 0
access/src/main/java/org/springframework/security/access/prepost/package-info.java

@@ -0,0 +1,27 @@
+/*
+ * Copyright 2004-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Contains the infrastructure classes for handling the {@code @PreAuthorize},
+ * {@code @PreFilter}, {@code @PostAuthorize} and {@code @PostFilter} annotations.
+ * <p>
+ * Other than the annotations themselves, the classes should be regarded as for internal
+ * framework use and are liable to change without notice.
+ */
+@NullMarked
+package org.springframework.security.access.prepost;
+
+import org.jspecify.annotations.NullMarked;

+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/AbstractAccessDecisionManager.java → access/src/main/java/org/springframework/security/access/vote/AbstractAccessDecisionManager.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/AbstractAclVoter.java → access/src/main/java/org/springframework/security/access/vote/AbstractAclVoter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/AffirmativeBased.java → access/src/main/java/org/springframework/security/access/vote/AffirmativeBased.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/AuthenticatedVoter.java → access/src/main/java/org/springframework/security/access/vote/AuthenticatedVoter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/ConsensusBased.java → access/src/main/java/org/springframework/security/access/vote/ConsensusBased.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/RoleHierarchyVoter.java → access/src/main/java/org/springframework/security/access/vote/RoleHierarchyVoter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/RoleVoter.java → access/src/main/java/org/springframework/security/access/vote/RoleVoter.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/UnanimousBased.java → access/src/main/java/org/springframework/security/access/vote/UnanimousBased.java


+ 0 - 0
core/src/main/java/org/springframework/security/access/vote/package-info.java → access/src/main/java/org/springframework/security/access/vote/package-info.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/AuthenticationCredentialsNotFoundEventTests.java → access/src/test/java/org/springframework/security/access/AuthenticationCredentialsNotFoundEventTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/AuthorizationFailureEventTests.java → access/src/test/java/org/springframework/security/access/AuthorizationFailureEventTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/AuthorizedEventTests.java → access/src/test/java/org/springframework/security/access/AuthorizedEventTests.java


+ 36 - 0
access/src/test/java/org/springframework/security/access/ITargetObject.java

@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.security.access;
+
+/**
+ * Represents the interface of a secured object.
+ *
+ * @author Ben Alex
+ */
+public interface ITargetObject {
+
+	Integer computeHashCode(String input);
+
+	int countLength(String input);
+
+	String makeLowerCase(String input);
+
+	String makeUpperCase(String input);
+
+	String publicMakeLowerCase(String input);
+
+}

+ 53 - 0
access/src/test/java/org/springframework/security/access/OtherTargetObject.java

@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.security.access;
+
+/**
+ * Simply extends {@link TargetObject} so we have a different object to put configuration
+ * attributes against.
+ * <P>
+ * There is no different behaviour. We have to define each method so that
+ * <code>Class.getMethod(methodName, args)</code> returns a <code>Method</code>
+ * referencing this class rather than the parent class.
+ * </p>
+ * <P>
+ * We need to implement <code>ITargetObject</code> again because the
+ * <code>MethodDefinitionAttributes</code> only locates attributes on interfaces
+ * explicitly defined by the intercepted class (not the interfaces defined by its parent
+ * class or classes).
+ * </p>
+ *
+ * @author Ben Alex
+ */
+public class OtherTargetObject extends TargetObject implements ITargetObject {
+
+	@Override
+	public String makeLowerCase(String input) {
+		return super.makeLowerCase(input);
+	}
+
+	@Override
+	public String makeUpperCase(String input) {
+		return super.makeUpperCase(input);
+	}
+
+	@Override
+	public String publicMakeLowerCase(String input) {
+		return super.publicMakeLowerCase(input);
+	}
+
+}

+ 0 - 0
core/src/test/java/org/springframework/security/access/SecurityConfigTests.java → access/src/test/java/org/springframework/security/access/SecurityConfigTests.java


+ 81 - 0
access/src/test/java/org/springframework/security/access/TargetObject.java

@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.security.access;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+
+/**
+ * Represents a secured object.
+ *
+ * @author Ben Alex
+ */
+public class TargetObject implements ITargetObject {
+
+	@Override
+	public Integer computeHashCode(String input) {
+		return input.hashCode();
+	}
+
+	@Override
+	public int countLength(String input) {
+		return input.length();
+	}
+
+	/**
+	 * Returns the lowercase string, followed by security environment information.
+	 * @param input the message to make lowercase
+	 * @return the lowercase message, a space, the <code>Authentication</code> class that
+	 * was on the <code>SecurityContext</code> at the time of method invocation, and a
+	 * boolean indicating if the <code>Authentication</code> object is authenticated or
+	 * not
+	 */
+	@Override
+	public String makeLowerCase(String input) {
+		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+		if (auth == null) {
+			return input.toLowerCase() + " Authentication empty";
+		}
+		else {
+			return input.toLowerCase() + " " + auth.getClass().getName() + " " + auth.isAuthenticated();
+		}
+	}
+
+	/**
+	 * Returns the uppercase string, followed by security environment information.
+	 * @param input the message to make uppercase
+	 * @return the uppercase message, a space, the <code>Authentication</code> class that
+	 * was on the <code>SecurityContext</code> at the time of method invocation, and a
+	 * boolean indicating if the <code>Authentication</code> object is authenticated or
+	 * not
+	 */
+	@Override
+	public String makeUpperCase(String input) {
+		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
+		return input.toUpperCase() + " " + auth.getClass().getName() + " " + auth.isAuthenticated();
+	}
+
+	/**
+	 * Delegates through to the {@link #makeLowerCase(String)} method.
+	 * @param input the message to be made lower-case
+	 */
+	@Override
+	public String publicMakeLowerCase(String input) {
+		return this.makeLowerCase(input);
+	}
+
+}

+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/BusinessService.java → access/src/test/java/org/springframework/security/access/annotation/BusinessService.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java → access/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/Entity.java → access/src/test/java/org/springframework/security/access/annotation/Entity.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java → access/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java → access/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java → access/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java → access/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/RequireAdminRole.java → access/src/test/java/org/springframework/security/access/annotation/RequireAdminRole.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/RequireUserRole.java → access/src/test/java/org/springframework/security/access/annotation/RequireUserRole.java


+ 1 - 2
core/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java → access/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java

@@ -39,8 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.fail;
 
 /**
- * Tests for
- * {@link org.springframework.security.access.annotation.SecuredAnnotationSecurityMetadataSource}
+ * Tests for {@link SecuredAnnotationSecurityMetadataSource}
  *
  * @author Mark St.Godard
  * @author Joe Scalise

+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/sec2150/CrudRepository.java → access/src/test/java/org/springframework/security/access/annotation/sec2150/CrudRepository.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/sec2150/MethodInvocationFactory.java → access/src/test/java/org/springframework/security/access/annotation/sec2150/MethodInvocationFactory.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/annotation/sec2150/PersonRepository.java → access/src/test/java/org/springframework/security/access/annotation/sec2150/PersonRepository.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java → access/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/expression/method/ExpressionBasedPreInvocationAdviceTests.java → access/src/test/java/org/springframework/security/access/expression/method/ExpressionBasedPreInvocationAdviceTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java → access/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/expression/method/MethodSecurityEvaluationContextTests.java → access/src/test/java/org/springframework/security/access/expression/method/MethodSecurityEvaluationContextTests.java


+ 12 - 12
core/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java → access/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java

@@ -17,6 +17,7 @@
 package org.springframework.security.access.expression.method;
 
 import org.aopalliance.intercept.MethodInvocation;
+import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -28,7 +29,6 @@ import org.springframework.security.access.expression.ExpressionUtils;
 import org.springframework.security.authentication.AuthenticationTrustResolver;
 import org.springframework.security.core.Authentication;
 
-import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.BDDMockito.given;
@@ -65,19 +65,19 @@ public class MethodSecurityExpressionRootTests {
 	public void canCallMethodsOnVariables() {
 		this.ctx.setVariable("var", "somestring");
 		Expression e = this.parser.parseExpression("#var.length() == 10");
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
 	}
 
 	@Test
 	public void isAnonymousReturnsTrueIfTrustResolverReportsAnonymous() {
 		given(this.trustResolver.isAnonymous(this.user)).willReturn(true);
-		assertThat(this.root.isAnonymous()).isTrue();
+		Assertions.assertThat(this.root.isAnonymous()).isTrue();
 	}
 
 	@Test
 	public void isAnonymousReturnsFalseIfTrustResolverReportsNonAnonymous() {
 		given(this.trustResolver.isAnonymous(this.user)).willReturn(false);
-		assertThat(this.root.isAnonymous()).isFalse();
+		Assertions.assertThat(this.root.isAnonymous()).isFalse();
 	}
 
 	@Test
@@ -87,7 +87,7 @@ public class MethodSecurityExpressionRootTests {
 		this.ctx.setVariable("domainObject", dummyDomainObject);
 		this.root.setPermissionEvaluator(pe);
 		given(pe.hasPermission(this.user, dummyDomainObject, "ignored")).willReturn(false);
-		assertThat(this.root.hasPermission(dummyDomainObject, "ignored")).isFalse();
+		Assertions.assertThat(this.root.hasPermission(dummyDomainObject, "ignored")).isFalse();
 	}
 
 	@Test
@@ -97,7 +97,7 @@ public class MethodSecurityExpressionRootTests {
 		this.ctx.setVariable("domainObject", dummyDomainObject);
 		this.root.setPermissionEvaluator(pe);
 		given(pe.hasPermission(this.user, dummyDomainObject, "ignored")).willReturn(true);
-		assertThat(this.root.hasPermission(dummyDomainObject, "ignored")).isTrue();
+		Assertions.assertThat(this.root.hasPermission(dummyDomainObject, "ignored")).isTrue();
 	}
 
 	@Test
@@ -109,13 +109,13 @@ public class MethodSecurityExpressionRootTests {
 		given(pe.hasPermission(eq(this.user), eq(dummyDomainObject), any(Integer.class))).willReturn(true, true, false);
 		Expression e = this.parser.parseExpression("hasPermission(#domainObject, 0xA)");
 		// evaluator returns true
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
 		e = this.parser.parseExpression("hasPermission(#domainObject, 10)");
 		// evaluator returns true
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
 		e = this.parser.parseExpression("hasPermission(#domainObject, 0xFF)");
 		// evaluator returns false, make sure return value matches
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isFalse();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isFalse();
 	}
 
 	@Test
@@ -132,11 +132,11 @@ public class MethodSecurityExpressionRootTests {
 		given(pe.hasPermission(this.user, targetObject, i)).willReturn(true, false);
 		given(pe.hasPermission(this.user, "x", i)).willReturn(true);
 		Expression e = this.parser.parseExpression("hasPermission(this, 2)");
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
 		e = this.parser.parseExpression("hasPermission(this, 2)");
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isFalse();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isFalse();
 		e = this.parser.parseExpression("hasPermission(this.x, 2)");
-		assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
+		Assertions.assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
 	}
 
 }

+ 0 - 0
core/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java → access/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/expression/method/SecurityRules.java → access/src/test/java/org/springframework/security/access/expression/method/SecurityRules.java


+ 0 - 0
core/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java → access/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů