Search in sources :

Example 61 with EndpointConfig

use of io.helidon.security.EndpointConfig in project helidon by oracle.

the class RoleValidatorTest method testDenyAll.

@Test
void testDenyAll() {
    RoleValidator validator = RoleValidator.create();
    DenyAll annot = mock(DenyAll.class);
    SecurityLevel appSecurityLevel = mock(SecurityLevel.class);
    SecurityLevel classSecurityLevel = mock(SecurityLevel.class);
    List<SecurityLevel> securityLevels = new ArrayList<>();
    securityLevels.add(appSecurityLevel);
    securityLevels.add(classSecurityLevel);
    EndpointConfig ep = mock(EndpointConfig.class);
    when(ep.securityLevels()).thenReturn(securityLevels);
    when(classSecurityLevel.filterAnnotations(DenyAll.class, EndpointConfig.AnnotationScope.METHOD)).thenReturn(List.of(annot));
    RoleValidator.RoleConfig rConfig = validator.fromAnnotations(ep);
    Errors.Collector collector = Errors.collector();
    ProviderRequest request = mock(ProviderRequest.class);
    when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Role.create("user")).build()));
    when(request.service()).thenReturn(Optional.empty());
    validator.validate(rConfig, collector, request);
    if (collector.collect().isValid()) {
        fail("DenyAll is set on this method, this should have failed");
    }
}
Also used : Errors(io.helidon.common.Errors) DenyAll(jakarta.annotation.security.DenyAll) SecurityLevel(io.helidon.security.SecurityLevel) ArrayList(java.util.ArrayList) EndpointConfig(io.helidon.security.EndpointConfig) ProviderRequest(io.helidon.security.ProviderRequest) Test(org.junit.jupiter.api.Test)

Example 62 with EndpointConfig

use of io.helidon.security.EndpointConfig in project helidon by oracle.

the class RoleValidatorTest method testServiceRolesDeny.

@Test
void testServiceRolesDeny() {
    RoleValidator validator = RoleValidator.create();
    RoleValidator.Roles annot = mock(RoleValidator.Roles.class);
    String[] roleArray = new String[] { "admin" };
    when(annot.value()).thenReturn(roleArray);
    when(annot.subjectType()).thenReturn(SubjectType.SERVICE);
    SecurityLevel appSecurityLevel = mock(SecurityLevel.class);
    SecurityLevel classSecurityLevel = mock(SecurityLevel.class);
    List<SecurityLevel> securityLevels = new ArrayList<>();
    securityLevels.add(appSecurityLevel);
    securityLevels.add(classSecurityLevel);
    EndpointConfig ep = mock(EndpointConfig.class);
    when(ep.securityLevels()).thenReturn(securityLevels);
    when(classSecurityLevel.filterAnnotations(RoleValidator.Roles.class, EndpointConfig.AnnotationScope.METHOD)).thenReturn(List.of(annot));
    RoleValidator.RoleConfig rConfig = validator.fromAnnotations(ep);
    Errors.Collector collector = Errors.collector();
    ProviderRequest request = mock(ProviderRequest.class);
    when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Role.create("admin")).build()));
    when(request.service()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("service")).addGrant(Role.create("user")).build()));
    validator.validate(rConfig, collector, request);
    if (collector.collect().isValid()) {
        fail("Service is not in admin role, should have failed");
    }
}
Also used : Errors(io.helidon.common.Errors) SecurityLevel(io.helidon.security.SecurityLevel) ArrayList(java.util.ArrayList) EndpointConfig(io.helidon.security.EndpointConfig) ProviderRequest(io.helidon.security.ProviderRequest) Test(org.junit.jupiter.api.Test)

Example 63 with EndpointConfig

use of io.helidon.security.EndpointConfig in project helidon by oracle.

the class ScopeValidatorTest method testScopesAndDeny.

@Test
public void testScopesAndDeny() {
    ScopeValidator validator = ScopeValidator.create();
    ScopeValidator.Scope annot = mock(ScopeValidator.Scope.class);
    when(annot.value()).thenReturn("calendar_get");
    ScopeValidator.Scope annotTwo = mock(ScopeValidator.Scope.class);
    when(annotTwo.value()).thenReturn("calendar_update");
    ScopeValidator.Scopes scopes = mock(ScopeValidator.Scopes.class);
    when(scopes.value()).thenReturn(new ScopeValidator.Scope[] { annot, annotTwo });
    SecurityLevel appSecurityLevel = mock(SecurityLevel.class);
    SecurityLevel classSecurityLevel = mock(SecurityLevel.class);
    List<SecurityLevel> securityLevels = new ArrayList<>();
    securityLevels.add(appSecurityLevel);
    securityLevels.add(classSecurityLevel);
    EndpointConfig ep = mock(EndpointConfig.class);
    when(ep.securityLevels()).thenReturn(securityLevels);
    when(classSecurityLevel.filterAnnotations(ScopeValidator.Scopes.class, EndpointConfig.AnnotationScope.METHOD)).thenReturn(List.of(scopes));
    ScopeValidator.ScopesConfig sConfig = validator.fromAnnotations(ep);
    Errors.Collector collector = Errors.collector();
    ProviderRequest request = mock(ProviderRequest.class);
    when(request.subject()).thenReturn(Optional.of(Subject.builder().principal(Principal.create("myAdmin")).addGrant(Grant.builder().type("scope").name("calendar_get").build()).build()));
    when(request.service()).thenReturn(Optional.empty());
    validator.validate(sConfig, collector, request);
    if (collector.collect().isValid()) {
        fail("User does not have calendar_update scope, so this should have failed");
    }
}
Also used : Errors(io.helidon.common.Errors) SecurityLevel(io.helidon.security.SecurityLevel) ArrayList(java.util.ArrayList) EndpointConfig(io.helidon.security.EndpointConfig) ProviderRequest(io.helidon.security.ProviderRequest) Test(org.junit.jupiter.api.Test)

Example 64 with EndpointConfig

use of io.helidon.security.EndpointConfig in project helidon by oracle.

the class TimeValidatorTest method initClass.

@BeforeAll
public static void initClass() {
    validator = TimeValidator.create();
    EndpointConfig ep = mock(EndpointConfig.class);
    TimeValidator.TimeOfDay tod = mock(TimeValidator.TimeOfDay.class);
    when(tod.from()).thenReturn("08:15:00");
    when(tod.to()).thenReturn("12:00");
    annotations.add(tod);
    TimeValidator.TimeOfDay tod2 = mock(TimeValidator.TimeOfDay.class);
    when(tod2.from()).thenReturn("12:30:00");
    when(tod2.to()).thenReturn("17:30");
    annotations.add(tod2);
    SecurityLevel appSecurityLevel = mock(SecurityLevel.class);
    SecurityLevel classSecurityLevel = mock(SecurityLevel.class);
    List<SecurityLevel> securityLevels = new ArrayList<>();
    securityLevels.add(appSecurityLevel);
    securityLevels.add(classSecurityLevel);
    when(ep.securityLevels()).thenReturn(securityLevels);
    when(classSecurityLevel.filterAnnotations(TimeValidator.TimeOfDay.class, EndpointConfig.AnnotationScope.CLASS)).thenReturn(List.of(tod, tod2));
    TimeValidator.DaysOfWeek dow = mock(TimeValidator.DaysOfWeek.class);
    when(dow.value()).thenReturn(new DayOfWeek[] { DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY });
    annotations.add(dow);
    when(classSecurityLevel.filterAnnotations(TimeValidator.DaysOfWeek.class, EndpointConfig.AnnotationScope.CLASS)).thenReturn(List.of(dow));
    timeConfig = validator.fromAnnotations(ep);
}
Also used : SecurityLevel(io.helidon.security.SecurityLevel) ArrayList(java.util.ArrayList) EndpointConfig(io.helidon.security.EndpointConfig) BeforeAll(org.junit.jupiter.api.BeforeAll)

Aggregations

EndpointConfig (io.helidon.security.EndpointConfig)64 ProviderRequest (io.helidon.security.ProviderRequest)54 Test (org.junit.jupiter.api.Test)50 SecurityEnvironment (io.helidon.security.SecurityEnvironment)35 SecurityLevel (io.helidon.security.SecurityLevel)30 SecurityContext (io.helidon.security.SecurityContext)28 ArrayList (java.util.ArrayList)26 OutboundSecurityResponse (io.helidon.security.OutboundSecurityResponse)18 Errors (io.helidon.common.Errors)17 AuthenticationResponse (io.helidon.security.AuthenticationResponse)16 Subject (io.helidon.security.Subject)15 Principal (io.helidon.security.Principal)12 List (java.util.List)11 AuthorizationResponse (io.helidon.security.AuthorizationResponse)9 Config (io.helidon.config.Config)8 SignedJwt (io.helidon.security.jwt.SignedJwt)8 RolesAllowed (jakarta.annotation.security.RolesAllowed)8 DenyAll (jakarta.annotation.security.DenyAll)7 Locale (java.util.Locale)7 Jwt (io.helidon.security.jwt.Jwt)6