@Override public AuthorizationContext getAuthorizationContext() { return delegate.getAuthorizationContext(); }
@Override public AuthorizationContext getAuthorizationContext() { return delegate.getAuthorizationContext(); }
private static boolean isTargetAuthorized(final Target target, final Signal<?> signal) { final Set<String> authorizedReadSubjects = signal.getDittoHeaders().getReadSubjects(); final AuthorizationContext authorizationContext = target.getAuthorizationContext(); final List<String> connectionSubjects = authorizationContext.getAuthorizationSubjectIds(); return !Collections.disjoint(authorizedReadSubjects, connectionSubjects); }
/** * Creates a new {@link Target} from existing target but different address. * * @param target the target * @param address the address where the signals will be published * @return the created {@link Target} */ public static Target newTarget(final Target target, final String address) { return newTarget(address, target.getAuthorizationContext(), target.getHeaderMapping().orElse(null), target.getTopics()); }
/** * Creates a new {@link Target} from existing target but different address. * * @param target the target * @param address the address where the signals will be published * @return the created {@link Target} */ public static Target newTarget(final Target target, final String address) { return newTarget(address, target.getAuthorizationContext(), target.getHeaderMapping().orElse(null), target.getTopics()); }
/** * If no context is set on connection level each target and source must have its own context. */ private void checkAuthorizationContextsAreValid() { // if the auth context on connection level is empty, // an auth context is required to be set on each source/target final Set<String> sourcesWithoutAuthContext = sources.stream() .filter(source -> source.getAuthorizationContext().isEmpty()) .flatMap(source -> source.getAddresses().stream()) .collect(Collectors.toSet()); final Set<String> targetsWithoutAuthContext = targets.stream() .filter(target -> target.getAuthorizationContext().isEmpty()) .map(Target::getAddress) .collect(Collectors.toSet()); if (!sourcesWithoutAuthContext.isEmpty() || !targetsWithoutAuthContext.isEmpty()) { final StringBuilder message = new StringBuilder("The "); if (!sourcesWithoutAuthContext.isEmpty()) { message.append("Sources ").append(sourcesWithoutAuthContext); } if (!sourcesWithoutAuthContext.isEmpty() && !targetsWithoutAuthContext.isEmpty()) { message.append(" and "); } if (!targetsWithoutAuthContext.isEmpty()) { message.append("Targets ").append(targetsWithoutAuthContext); } message.append(" are missing an authorization context."); throw ConnectionConfigurationInvalidException.newBuilder(message.toString()).build(); } }
private static boolean isTargetAuthorized(final Target target, final Signal<?> signal) { final Set<String> authorizedReadSubjects = signal.getDittoHeaders().getReadSubjects(); final AuthorizationContext authorizationContext = target.getAuthorizationContext(); final List<String> connectionSubjects = authorizationContext.getAuthorizationSubjectIds(); return !Collections.disjoint(authorizedReadSubjects, connectionSubjects); }
/** * If no context is set on connection level each target and source must have its own context. */ private void checkAuthorizationContextsAreValid() { // if the auth context on connection level is empty, // an auth context is required to be set on each source/target final Set<String> sourcesWithoutAuthContext = sources.stream() .filter(source -> source.getAuthorizationContext().isEmpty()) .flatMap(source -> source.getAddresses().stream()) .collect(Collectors.toSet()); final Set<String> targetsWithoutAuthContext = targets.stream() .filter(target -> target.getAuthorizationContext().isEmpty()) .map(Target::getAddress) .collect(Collectors.toSet()); if (!sourcesWithoutAuthContext.isEmpty() || !targetsWithoutAuthContext.isEmpty()) { final StringBuilder message = new StringBuilder("The "); if (!sourcesWithoutAuthContext.isEmpty()) { message.append("Sources ").append(sourcesWithoutAuthContext); } if (!sourcesWithoutAuthContext.isEmpty() && !targetsWithoutAuthContext.isEmpty()) { message.append(" and "); } if (!targetsWithoutAuthContext.isEmpty()) { message.append("Targets ").append(targetsWithoutAuthContext); } message.append(" are missing an authorization context."); throw ConnectionConfigurationInvalidException.newBuilder(message.toString()).build(); } }