Skip to content

Commit

Permalink
Authz support (#69)
Browse files Browse the repository at this point in the history
* Added authz support for mgmt

* Updade version
  • Loading branch information
slavikm committed Oct 11, 2023
1 parent 4b923af commit cb8249d
Show file tree
Hide file tree
Showing 24 changed files with 1,268 additions and 3 deletions.
2 changes: 1 addition & 1 deletion examples/management-cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<dependency>
<groupId>com.descope</groupId>
<artifactId>java-sdk</artifactId>
<version>1.0.7</version>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>info.picocli</groupId>
Expand Down
7 changes: 6 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<groupId>com.descope</groupId>
<artifactId>java-sdk</artifactId>
<modelVersion>4.0.0</modelVersion>
<version>1.0.7</version>
<version>1.0.8</version>
<name>${project.groupId}:${project.artifactId}</name>
<description>Java library used to integrate with Descope.</description>
<url>https://github.com/descope/descope-java</url>
Expand Down Expand Up @@ -153,6 +153,11 @@
<groupId>com.fasterxml.jackson.core</groupId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.15.2</version>
</dependency>
</dependencies>
<build>
<finalName>${project.groupId}.${project.artifactId}-${project.version}</finalName>
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/com/descope/enums/NodeExpressionType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.descope.enums;

import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

public enum NodeExpressionType {
SELF("self"),
TARGET_SET("targetSet"),
RELATION_LEFT("relationLeft"),
RELATION_RIGHT("relationRight");

@Getter
@JsonValue
private final String value;

NodeExpressionType(String value) {
this.value = value;
}
}
19 changes: 19 additions & 0 deletions src/main/java/com/descope/enums/NodeType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.descope.enums;

import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

public enum NodeType {
CHILD("child"),
UNION("union"),
INTERSECT("intersect"),
SUB("sub");

@Getter
@JsonValue
private final String value;

NodeType(String value) {
this.value = value;
}
}
17 changes: 17 additions & 0 deletions src/main/java/com/descope/literals/Routes.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,5 +140,22 @@ public static class ManagementEndPoints {

// Audit
public static final String MANAGEMENT_AUDIT_SEARCH_LINK = "/v1/mgmt/audit/search";

// Authz
public static final String MANAGEMENT_AUTHZ_SCHEMA_SAVE = "/v1/mgmt/authz/schema/save";
public static final String MANAGEMENT_AUTHZ_SCHEMA_DELETE = "/v1/mgmt/authz/schema/delete";
public static final String MANAGEMENT_AUTHZ_SCHEMA_LOAD = "/v1/mgmt/authz/schema/load";
public static final String MANAGEMENT_AUTHZ_NS_SAVE = "/v1/mgmt/authz/ns/save";
public static final String MANAGEMENT_AUTHZ_NS_DELETE = "/v1/mgmt/authz/ns/delete";
public static final String MANAGEMENT_AUTHZ_RD_SAVE = "/v1/mgmt/authz/rd/save";
public static final String MANAGEMENT_AUTHZ_RD_DELETE = "/v1/mgmt/authz/rd/delete";
public static final String MANAGEMENT_AUTHZ_RE_CREATE = "/v1/mgmt/authz/re/create";
public static final String MANAGEMENT_AUTHZ_RE_DELETE = "/v1/mgmt/authz/re/delete";
public static final String MANAGEMENT_AUTHZ_RE_DELETE_RESOURCES = "/v1/mgmt/authz/re/deleteresources";
public static final String MANAGEMENT_AUTHZ_RE_HAS_RELATIONS = "/v1/mgmt/authz/re/has";
public static final String MANAGEMENT_AUTHZ_RE_WHO = "/v1/mgmt/authz/re/who";
public static final String MANAGEMENT_AUTHZ_RE_RESOURCE = "/v1/mgmt/authz/re/resource";
public static final String MANAGEMENT_AUTHZ_RE_TARGETS = "/v1/mgmt/authz/re/targets";
public static final String MANAGEMENT_AUTHZ_RE_TARGET_ALL = "/v1/mgmt/authz/re/targetall";
}
}
15 changes: 15 additions & 0 deletions src/main/java/com/descope/model/authz/HasRelationsResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.descope.model.authz;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HasRelationsResponse {
List<RelationQuery> relationQueries;
}
14 changes: 14 additions & 0 deletions src/main/java/com/descope/model/authz/LoadSchemaResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.descope.model.authz;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LoadSchemaResponse {
Schema schema;
}
19 changes: 19 additions & 0 deletions src/main/java/com/descope/model/authz/Namespace.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.descope.model.authz;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class Namespace {
String name;
List<RelationDefinition> relationDefinitions;
}
24 changes: 24 additions & 0 deletions src/main/java/com/descope/model/authz/Node.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.descope.model.authz;

import com.descope.enums.NodeType;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@SuppressWarnings("checkstyle:MemberName")
@JsonInclude(Include.NON_NULL)
public class Node {
@JsonProperty("nType")
NodeType nType;
List<Node> children;
NodeExpression expression;
}
22 changes: 22 additions & 0 deletions src/main/java/com/descope/model/authz/NodeExpression.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.descope.model.authz;

import com.descope.enums.NodeExpressionType;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class NodeExpression {
NodeExpressionType neType;
String relationDefinition;
String relationDefinitionNamespace;
String targetRelationDefinition;
String targetRelationDefinitionNamespace;
}
24 changes: 24 additions & 0 deletions src/main/java/com/descope/model/authz/Relation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.descope.model.authz;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class Relation {
String resource;
String relationDefinition;
String namespace;
String target;
String targetSetResource;
String targetSetRelationDefinition;
String targetSetRelationDefinitionNamespace;
UserQuery query;
}
18 changes: 18 additions & 0 deletions src/main/java/com/descope/model/authz/RelationDefinition.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.descope.model.authz;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class RelationDefinition {
String name;
Node complexDefinition;
}
21 changes: 21 additions & 0 deletions src/main/java/com/descope/model/authz/RelationQuery.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.descope.model.authz;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class RelationQuery {
String resource;
String relationDefinition;
String namespace;
String target;
boolean hasRelation;
}
15 changes: 15 additions & 0 deletions src/main/java/com/descope/model/authz/RelationsResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.descope.model.authz;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelationsResponse {
List<Relation> relations;
}
19 changes: 19 additions & 0 deletions src/main/java/com/descope/model/authz/Schema.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.descope.model.authz;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class Schema {
String name;
List<Namespace> namespaces;
}
26 changes: 26 additions & 0 deletions src/main/java/com/descope/model/authz/UserQuery.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.descope.model.authz;

import com.descope.enums.UserStatus;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import java.util.List;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(Include.NON_NULL)
public class UserQuery {
List<String> tenants;
List<String> roles;
String text;
List<UserStatus> statuses;
boolean ssoOnly;
boolean withTestUser;
Map<String, Object> customAttributes;
}
15 changes: 15 additions & 0 deletions src/main/java/com/descope/model/authz/WhoCanAccessResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.descope.model.authz;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WhoCanAccessResponse {
List<String> targets;
}
2 changes: 2 additions & 0 deletions src/main/java/com/descope/model/mgmt/ManagementServices.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.descope.sdk.mgmt.AccessKeyService;
import com.descope.sdk.mgmt.AuditService;
import com.descope.sdk.mgmt.AuthzService;
import com.descope.sdk.mgmt.FlowService;
import com.descope.sdk.mgmt.GroupService;
import com.descope.sdk.mgmt.JwtService;
Expand All @@ -26,4 +27,5 @@ public class ManagementServices {
FlowService flowService;
GroupService groupService;
AuditService auditService;
AuthzService authzService;
}
Loading

0 comments on commit cb8249d

Please sign in to comment.