mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-03-01 19:09:08 +00:00
Support Customizing Observation Conventions
Closes gh-12534
This commit is contained in:
parent
ff4e926111
commit
8d933fcb03
@ -17,6 +17,7 @@
|
|||||||
package org.springframework.security.authentication;
|
package org.springframework.security.authentication;
|
||||||
|
|
||||||
import io.micrometer.observation.Observation;
|
import io.micrometer.observation.Observation;
|
||||||
|
import io.micrometer.observation.ObservationConvention;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
|
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@ -35,7 +36,7 @@ public final class ObservationAuthenticationManager implements AuthenticationMan
|
|||||||
|
|
||||||
private final AuthenticationManager delegate;
|
private final AuthenticationManager delegate;
|
||||||
|
|
||||||
private final AuthenticationObservationConvention convention = new AuthenticationObservationConvention();
|
private ObservationConvention<AuthenticationObservationContext> convention = new AuthenticationObservationConvention();
|
||||||
|
|
||||||
public ObservationAuthenticationManager(ObservationRegistry registry, AuthenticationManager delegate) {
|
public ObservationAuthenticationManager(ObservationRegistry registry, AuthenticationManager delegate) {
|
||||||
Assert.notNull(registry, "observationRegistry cannot be null");
|
Assert.notNull(registry, "observationRegistry cannot be null");
|
||||||
@ -56,4 +57,15 @@ public final class ObservationAuthenticationManager implements AuthenticationMan
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the provided convention for reporting observation data
|
||||||
|
*
|
||||||
|
* @param convention The provided convention
|
||||||
|
*
|
||||||
|
* @since 6.1
|
||||||
|
*/
|
||||||
|
public void setConvention(ObservationConvention<AuthenticationObservationContext> convention) {
|
||||||
|
Assert.notNull(convention, "The observation convention cannot be null");
|
||||||
|
this.convention = convention;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,10 @@
|
|||||||
package org.springframework.security.authentication;
|
package org.springframework.security.authentication;
|
||||||
|
|
||||||
import io.micrometer.observation.Observation;
|
import io.micrometer.observation.Observation;
|
||||||
|
import io.micrometer.observation.ObservationConvention;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor;
|
import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@ -36,7 +38,7 @@ public class ObservationReactiveAuthenticationManager implements ReactiveAuthent
|
|||||||
|
|
||||||
private final ReactiveAuthenticationManager delegate;
|
private final ReactiveAuthenticationManager delegate;
|
||||||
|
|
||||||
private final AuthenticationObservationConvention convention = new AuthenticationObservationConvention();
|
private ObservationConvention<AuthenticationObservationContext> convention = new AuthenticationObservationConvention();
|
||||||
|
|
||||||
public ObservationReactiveAuthenticationManager(ObservationRegistry registry,
|
public ObservationReactiveAuthenticationManager(ObservationRegistry registry,
|
||||||
ReactiveAuthenticationManager delegate) {
|
ReactiveAuthenticationManager delegate) {
|
||||||
@ -62,4 +64,15 @@ public class ObservationReactiveAuthenticationManager implements ReactiveAuthent
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the provided convention for reporting observation data
|
||||||
|
*
|
||||||
|
* @param convention The provided convention
|
||||||
|
*
|
||||||
|
* @since 6.1
|
||||||
|
*/
|
||||||
|
public void setConvention(ObservationConvention<AuthenticationObservationContext> convention) {
|
||||||
|
Assert.notNull(convention, "The observation convention cannot be null");
|
||||||
|
this.convention = convention;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,10 +19,12 @@ package org.springframework.security.authorization;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import io.micrometer.observation.Observation;
|
import io.micrometer.observation.Observation;
|
||||||
|
import io.micrometer.observation.ObservationConvention;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
|
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An {@link AuthorizationManager} that observes the authorization
|
* An {@link AuthorizationManager} that observes the authorization
|
||||||
@ -36,7 +38,7 @@ public final class ObservationAuthorizationManager<T> implements AuthorizationMa
|
|||||||
|
|
||||||
private final AuthorizationManager<T> delegate;
|
private final AuthorizationManager<T> delegate;
|
||||||
|
|
||||||
private final AuthorizationObservationConvention convention = new AuthorizationObservationConvention();
|
private ObservationConvention<AuthorizationObservationContext<?>> convention = new AuthorizationObservationConvention();
|
||||||
|
|
||||||
public ObservationAuthorizationManager(ObservationRegistry registry, AuthorizationManager<T> delegate) {
|
public ObservationAuthorizationManager(ObservationRegistry registry, AuthorizationManager<T> delegate) {
|
||||||
this.registry = registry;
|
this.registry = registry;
|
||||||
@ -68,4 +70,15 @@ public final class ObservationAuthorizationManager<T> implements AuthorizationMa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the provided convention for reporting observation data
|
||||||
|
*
|
||||||
|
* @param convention The provided convention
|
||||||
|
*
|
||||||
|
* @since 6.1
|
||||||
|
*/
|
||||||
|
public void setConvention(ObservationConvention<AuthorizationObservationContext<?>> convention) {
|
||||||
|
Assert.notNull(convention, "The observation convention cannot be null");
|
||||||
|
this.convention = convention;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,10 @@
|
|||||||
package org.springframework.security.authorization;
|
package org.springframework.security.authorization;
|
||||||
|
|
||||||
import io.micrometer.observation.Observation;
|
import io.micrometer.observation.Observation;
|
||||||
|
import io.micrometer.observation.ObservationConvention;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor;
|
import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
@ -36,7 +38,7 @@ public final class ObservationReactiveAuthorizationManager<T> implements Reactiv
|
|||||||
|
|
||||||
private final ReactiveAuthorizationManager<T> delegate;
|
private final ReactiveAuthorizationManager<T> delegate;
|
||||||
|
|
||||||
private final AuthorizationObservationConvention convention = new AuthorizationObservationConvention();
|
private ObservationConvention<AuthorizationObservationContext<?>> convention = new AuthorizationObservationConvention();
|
||||||
|
|
||||||
public ObservationReactiveAuthorizationManager(ObservationRegistry registry,
|
public ObservationReactiveAuthorizationManager(ObservationRegistry registry,
|
||||||
ReactiveAuthorizationManager<T> delegate) {
|
ReactiveAuthorizationManager<T> delegate) {
|
||||||
@ -67,4 +69,15 @@ public final class ObservationReactiveAuthorizationManager<T> implements Reactiv
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the provided convention for reporting observation data
|
||||||
|
*
|
||||||
|
* @param convention The provided convention
|
||||||
|
*
|
||||||
|
* @since 6.1
|
||||||
|
*/
|
||||||
|
public void setConvention(ObservationConvention<AuthorizationObservationContext<?>> convention) {
|
||||||
|
Assert.notNull(convention, "The observation convention cannot be null");
|
||||||
|
this.convention = convention;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,4 +93,9 @@ public class ObservationAuthenticationManagerTests {
|
|||||||
assertThat(context.getAuthenticationResult()).isNull();
|
assertThat(context.getAuthenticationResult()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void conventionSetterThrowsWhenNull() {
|
||||||
|
assertThatExceptionOfType(IllegalArgumentException.class)
|
||||||
|
.isThrownBy(() -> this.tested.setConvention(null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,4 +96,10 @@ public class ObservationReactiveAuthenticationManagerTests {
|
|||||||
assertThat(context.getAuthenticationResult()).isNull();
|
assertThat(context.getAuthenticationResult()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void conventionSetterThrowsWhenNull() {
|
||||||
|
assertThatExceptionOfType(IllegalArgumentException.class)
|
||||||
|
.isThrownBy(() -> this.tested.setConvention(null));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -118,4 +118,9 @@ public class ObservationAuthorizationManagerTests {
|
|||||||
assertThat(context.getDecision()).isEqualTo(this.grant);
|
assertThat(context.getDecision()).isEqualTo(this.grant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void conventionSetterThrowsWhenNull() {
|
||||||
|
assertThatExceptionOfType(IllegalArgumentException.class)
|
||||||
|
.isThrownBy(() -> this.tested.setConvention(null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,4 +117,9 @@ public class ObservationReactiveAuthorizationManagerTests {
|
|||||||
assertThat(context.getDecision()).isEqualTo(this.grant);
|
assertThat(context.getDecision()).isEqualTo(this.grant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void conventionSetterThrowsWhenNull() {
|
||||||
|
assertThatExceptionOfType(IllegalArgumentException.class)
|
||||||
|
.isThrownBy(() -> this.tested.setConvention(null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user