parent
570092c467
commit
ef01124eb9
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright 2002-2021 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.
|
||||
*/
|
||||
|
||||
package org.springframework.security.authorization;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Represents an {@link AuthorizationDecision} based on a collection of authorities
|
||||
*
|
||||
* @author Marcus Da Coregio
|
||||
* @since 5.6
|
||||
*/
|
||||
class AuthorityAuthorizationDecision extends AuthorizationDecision {
|
||||
|
||||
private final Collection<String> authorities;
|
||||
|
||||
AuthorityAuthorizationDecision(boolean granted, Collection<String> authorities) {
|
||||
super(granted);
|
||||
this.authorities = authorities;
|
||||
}
|
||||
|
||||
Collection<String> getAuthorities() {
|
||||
return this.authorities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName() + " [" + "granted=" + isGranted() + ", authorities=" + this.authorities + ']';
|
||||
}
|
||||
|
||||
}
|
|
@ -124,7 +124,7 @@ public final class AuthorityAuthorizationManager<T> implements AuthorizationMana
|
|||
@Override
|
||||
public AuthorizationDecision check(Supplier<Authentication> authentication, T object) {
|
||||
boolean granted = isGranted(authentication.get());
|
||||
return new AuthorizationDecision(granted);
|
||||
return new AuthorityAuthorizationDecision(granted, this.authorities);
|
||||
}
|
||||
|
||||
private boolean isGranted(Authentication authentication) {
|
||||
|
|
|
@ -48,8 +48,8 @@ public class AuthorityReactiveAuthorizationManager<T> implements ReactiveAuthori
|
|||
.flatMapIterable(Authentication::getAuthorities)
|
||||
.map(GrantedAuthority::getAuthority)
|
||||
.any(this.authorities::contains)
|
||||
.map(AuthorizationDecision::new)
|
||||
.defaultIfEmpty(new AuthorizationDecision(false));
|
||||
.map((granted) -> ((AuthorizationDecision) new AuthorityAuthorizationDecision(granted, this.authorities)))
|
||||
.defaultIfEmpty(new AuthorityAuthorizationDecision(false, this.authorities));
|
||||
// @formatter:on
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2021 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.
|
||||
|
@ -32,4 +32,9 @@ public class AuthorizationDecision {
|
|||
return this.granted;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName() + " [granted=" + this.granted + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -49,4 +49,10 @@ class ExpressionAttribute {
|
|||
return this.expression;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName() + " [Expression="
|
||||
+ ((this.expression != null) ? this.expression.getExpressionString() : null) + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright 2002-2021 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.
|
||||
*/
|
||||
|
||||
package org.springframework.security.authorization.method;
|
||||
|
||||
import org.springframework.security.authorization.AuthorizationDecision;
|
||||
|
||||
/**
|
||||
* Represents an {@link AuthorizationDecision} based on a {@link ExpressionAttribute}
|
||||
*
|
||||
* @author Marcus Da Coregio
|
||||
* @since 5.6
|
||||
*/
|
||||
class ExpressionAttributeAuthorizationDecision extends AuthorizationDecision {
|
||||
|
||||
private final ExpressionAttribute expressionAttribute;
|
||||
|
||||
ExpressionAttributeAuthorizationDecision(boolean granted, ExpressionAttribute expressionAttribute) {
|
||||
super(granted);
|
||||
this.expressionAttribute = expressionAttribute;
|
||||
}
|
||||
|
||||
ExpressionAttribute getExpressionAttribute() {
|
||||
return this.expressionAttribute;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName() + " [" + "granted=" + isGranted() + ", expressionAttribute="
|
||||
+ this.expressionAttribute + ']';
|
||||
}
|
||||
|
||||
}
|
|
@ -76,7 +76,7 @@ public final class PostAuthorizeAuthorizationManager implements AuthorizationMan
|
|||
mi.getMethodInvocation());
|
||||
this.expressionHandler.setReturnObject(mi.getResult(), ctx);
|
||||
boolean granted = ExpressionUtils.evaluateAsBoolean(attribute.getExpression(), ctx);
|
||||
return new AuthorizationDecision(granted);
|
||||
return new ExpressionAttributeAuthorizationDecision(granted, attribute);
|
||||
}
|
||||
|
||||
private final class PostAuthorizeExpressionAttributeRegistry
|
||||
|
|
|
@ -74,7 +74,7 @@ public final class PreAuthorizeAuthorizationManager implements AuthorizationMana
|
|||
}
|
||||
EvaluationContext ctx = this.expressionHandler.createEvaluationContext(authentication.get(), mi);
|
||||
boolean granted = ExpressionUtils.evaluateAsBoolean(attribute.getExpression(), ctx);
|
||||
return new AuthorizationDecision(granted);
|
||||
return new ExpressionAttributeAuthorizationDecision(granted, attribute);
|
||||
}
|
||||
|
||||
private final class PreAuthorizeExpressionAttributeRegistry
|
||||
|
|
Loading…
Reference in New Issue