Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,18 @@
package org.apache.polaris.core.auth;

import jakarta.annotation.Nonnull;
import java.util.List;
import java.util.Set;
import org.apache.polaris.core.entity.PolarisEntity;
import org.apache.polaris.core.entity.PrincipalRoleEntity;

/** Holds the results of request authentication. */
public class AuthenticatedPolarisPrincipal implements java.security.Principal {
private final PolarisEntity principalEntity;
private final Set<String> activatedPrincipalRoleNames;
// only known and set after the above set of principal role names have been resolved. Before
// this, this list is null
private List<PrincipalRoleEntity> activatedPrincipalRoles;

public AuthenticatedPolarisPrincipal(
@Nonnull PolarisEntity principalEntity, @Nonnull Set<String> activatedPrincipalRoles) {
this.principalEntity = principalEntity;
this.activatedPrincipalRoleNames = activatedPrincipalRoles;
this.activatedPrincipalRoles = null;
}

@Override
Expand All @@ -52,21 +46,11 @@ public Set<String> getActivatedPrincipalRoleNames() {
return activatedPrincipalRoleNames;
}

public List<PrincipalRoleEntity> getActivatedPrincipalRoles() {
return activatedPrincipalRoles;
}

public void setActivatedPrincipalRoles(List<PrincipalRoleEntity> activatedPrincipalRoles) {
this.activatedPrincipalRoles = activatedPrincipalRoles;
}

@Override
public String toString() {
return "principalEntity="
+ getPrincipalEntity()
+ ";activatedPrincipalRoleNames="
+ getActivatedPrincipalRoleNames()
+ ";activatedPrincipalRoles="
+ getActivatedPrincipalRoles();
+ getActivatedPrincipalRoleNames();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,13 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.polaris.core.PolarisDiagnostics;
import org.apache.polaris.core.auth.AuthenticatedPolarisPrincipal;
import org.apache.polaris.core.context.CallContext;
import org.apache.polaris.core.entity.PolarisBaseEntity;
import org.apache.polaris.core.entity.PolarisEntityConstants;
import org.apache.polaris.core.entity.PolarisEntitySubType;
import org.apache.polaris.core.entity.PolarisEntityType;
import org.apache.polaris.core.entity.PrincipalRoleEntity;
import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper;
import org.apache.polaris.core.persistence.ResolvedPolarisEntity;
Expand All @@ -56,7 +54,6 @@ public class PolarisResolutionManifest implements PolarisResolutionManifestCatal
private final PolarisEntityManager entityManager;
private final CallContext callContext;
private final SecurityContext securityContext;
private final AuthenticatedPolarisPrincipal authenticatedPrincipal;
private final String catalogName;
private final Resolver primaryResolver;
private final PolarisDiagnostics diagnostics;
Expand Down Expand Up @@ -96,8 +93,6 @@ public PolarisResolutionManifest(
"invalid_principal_type_for_resolution_manifest",
"principal={}",
securityContext.getUserPrincipal());
this.authenticatedPrincipal =
(AuthenticatedPolarisPrincipal) securityContext.getUserPrincipal();

// TODO: Make the rootContainer lookup no longer optional in the persistence store.
// For now, we'll try to resolve the rootContainer as "optional", and only if we fail to find
Expand Down Expand Up @@ -149,14 +144,6 @@ public ResolverStatus resolveAll() {
!= ResolverStatus.StatusEnum.CALLER_PRINCIPAL_DOES_NOT_EXIST,
"caller_principal_does_not_exist_at_resolution_time");

// activated principal roles are known, add them to the call context
if (primaryResolverStatus.getStatus() == ResolverStatus.StatusEnum.SUCCESS) {
List<PrincipalRoleEntity> activatedPrincipalRoles =
primaryResolver.getResolvedCallerPrincipalRoles().stream()
.map(ce -> PrincipalRoleEntity.of(ce.getEntity()))
.collect(Collectors.toList());
this.authenticatedPrincipal.setActivatedPrincipalRoles(activatedPrincipalRoles);
}
return primaryResolverStatus;
}

Expand Down