Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new SSO logic and SSO apps #98

Merged
merged 3 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from 2 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
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.13</version>
<version>1.0.14</version>
</dependency>
<dependency>
<groupId>info.picocli</groupId>
Expand Down
2 changes: 1 addition & 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.13</version>
<version>1.0.14</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
11 changes: 11 additions & 0 deletions src/main/java/com/descope/exception/ServerCommonException.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ protected ServerCommonException(String message, String code) {
setCode(code);
}

protected ServerCommonException(String message, String code, Throwable cause) {
super(message, cause);
setCode(code);
}

public static ServerCommonException invalidArgument(String property) {
String message = String.format("The %s argument is invalid", property);
return new ServerCommonException(message, INVALID_ARGUMENT);
Expand All @@ -41,4 +46,10 @@ public static ServerCommonException genericServerError(String message, String co
e.serverResponse = serverResponse;
return e;
}

public static ServerCommonException parseResponseError(String message, String serverResponse, Throwable cause) {
ServerCommonException e = new ServerCommonException(message, null, cause);
e.serverResponse = serverResponse;
return e;
}
}
22 changes: 21 additions & 1 deletion src/main/java/com/descope/literals/Routes.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ public static class AuthEndPoints {
public static final String COMPOSE_SAML_START_LINK = "/v1/auth/saml/authorize";
public static final String EXCHANGE_SAML_LINK = "/v1/auth/saml/exchange";

// SSO
public static final String COMPOSE_SSO_START_LINK = "/v1/auth/sso/authorize";
public static final String EXCHANGE_SSO_LINK = "/v1/auth/sso/exchange";

// Password
public static final String SIGN_UP_PASSWORD_LINK = "/v1/auth/password/signup";
public static final String SIGN_IN_PASSWORD_LINK = "/v1/auth/password/signin";
Expand Down Expand Up @@ -97,6 +101,9 @@ public static class ManagementEndPoints {
public static final String USER_SET_ROLES_LINK = "/v1/mgmt/user/update/role/set";
public static final String USER_ADD_ROLES_LINK = "/v1/mgmt/user/update/role/add";
public static final String USER_REMOVE_ROLES_LINK = "/v1/mgmt/user/update/role/remove";
public static final String USER_SET_SSO_APPS_LINK = "/v1/mgmt/user/update/ssoapp/set";
public static final String USER_ADD_SSO_APPS_LINK = "/v1/mgmt/user/update/ssoapp/add";
public static final String USER_REMOVE_SSO_APPS_LINK = "/v1/mgmt/user/update/ssoapp/remove";
public static final String USER_ADD_TENANT_LINK = "/v1/mgmt/user/update/tenant/add";
public static final String USER_REMOVE_TENANT_LINK = "/v1/mgmt/user/update/tenant/remove";
public static final String GET_PROVIDER_TOKEN = "/v1/mgmt/user/provider/token";
Expand All @@ -118,11 +125,24 @@ public static class ManagementEndPoints {
public static final String GET_TENANT_SETTINGS_LINK = "/v1/mgmt/tenant/settings";

// SSO
public static final String SSO_GET_SETTINGS_LINK = "/v2/mgmt/sso/settings";
public static final String SSO_GET_SETTINGS_LINK = "/v1/mgmt/sso/settings";
public static final String SSO_DELETE_SETTINGS_LINK = "/v1/mgmt/sso/settings";
public static final String SSO_CONFIGURE_SETTINGS_LINK = "/v1/mgmt/sso/settings";
public static final String SSO_CONFIGURE_METADATA_LINK = "/v1/mgmt/sso/metadata";
public static final String SSO_CONFIGURE_MAPPING_LINK = "/v1/mgmt/sso/mapping";
public static final String SSO_GET_SETTINGS_V2_LINK = "/v2/mgmt/sso/settings";
public static final String SSO_CONFIGURE_SAML_SETTINGS_LINK = "/v1/mgmt/sso/saml";
public static final String SSO_CONFIGURE_SAML_SETTINGS_BY_MD_LINK = "/v1/mgmt/sso/saml/metadata";
public static final String SSO_CONFIGURE_OIDC_SETTINGS_LINK = "/v1/mgmt/sso/oidc";

// SSO Application
public static final String SSO_APPLICATION_OIDC_CREATE_LINK = "/v1/mgmt/sso/idp/app/oidc/create";
public static final String SSO_APPLICATION_SAML_CREATE_LINK = "/v1/mgmt/sso/idp/app/saml/create";
public static final String SSO_APPLICATION_OIDC_UPDATE_LINK = "/v1/mgmt/sso/idp/app/oidc/update";
public static final String SSO_APPLICATION_SAML_UPDATE_LINK = "/v1/mgmt/sso/idp/app/saml/update";
public static final String SSO_APPLICATION_DELETE_LINK = "/v1/mgmt/sso/idp/app/delete";
public static final String SSO_APPLICATION_LOAD_LINK = "/v1/mgmt/sso/idp/app/load";
public static final String SSO_APPLICATION_LOAD_ALL_LINK = "/v1/mgmt/sso/idp/apps/load";

// Group
public static final String GROUP_LOAD_ALL_LINK = "/v1/mgmt/group/all";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.descope.sdk.auth.OTPService;
import com.descope.sdk.auth.PasswordService;
import com.descope.sdk.auth.SAMLService;
import com.descope.sdk.auth.SSOServiceProvider;
import com.descope.sdk.auth.TOTPService;
import com.descope.sdk.auth.WebAuthnService;
import lombok.Builder;
Expand All @@ -18,6 +19,7 @@ public class AuthenticationServices {
AuthenticationService authService;
OTPService otpService;
SAMLService samlService;
SSOServiceProvider ssoServiceProvider;
TOTPService totpService;
OAuthService oauthService;
PasswordService passwordService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ public class LoginOptions {
private boolean stepup;
private boolean mfa;
private Map<String, Object> customClaims;
private Map<String, String> templateOptions;
}
16 changes: 16 additions & 0 deletions src/main/java/com/descope/model/magiclink/SignUpOptions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.descope.model.magiclink;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SignUpOptions {
private Map<String, Object> customClaims;
private Map<String, String> templateOptions;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.descope.model.magiclink.request;

import com.descope.model.magiclink.SignUpOptions;
import com.descope.model.user.User;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
Expand All @@ -18,4 +19,5 @@ public class SignUpRequest {

@JsonProperty("URI")
private String uri;
private SignUpOptions loginOptions;
}
14 changes: 14 additions & 0 deletions src/main/java/com/descope/model/mgmt/IDResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.descope.model.mgmt;

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

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class IDResponse {
private String id;
}
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 @@ -10,6 +10,7 @@
import com.descope.sdk.mgmt.PermissionService;
import com.descope.sdk.mgmt.ProjectService;
import com.descope.sdk.mgmt.RolesService;
import com.descope.sdk.mgmt.SsoApplicationService;
import com.descope.sdk.mgmt.SsoService;
import com.descope.sdk.mgmt.TenantService;
import com.descope.sdk.mgmt.UserService;
Expand All @@ -26,6 +27,7 @@ public class ManagementServices {
PermissionService permissionService;
RolesService rolesService;
SsoService ssoService;
SsoApplicationService ssoApplicationService;
FlowService flowService;
GroupService groupService;
AuditService auditService;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/descope/model/otp/SignUpRequest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.descope.model.otp;

import com.descope.model.magiclink.SignUpOptions;
import com.descope.model.user.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand All @@ -16,4 +17,5 @@ public class SignUpRequest {
private String email;
private String loginId;
private User user;
private SignUpOptions loginOptions;
}
9 changes: 9 additions & 0 deletions src/main/java/com/descope/model/sso/AttributeMapping.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
package com.descope.model.sso;

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

/**
* Represents a SAML mapping between Descope and IDP user attributes.
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttributeMapping {
private String name;
private String givenName;
private String middleName;
private String familyName;
private String picture;
private String email;
private String phoneNumber;
private String group;
private Map<String, String> customAttributes;
}
27 changes: 27 additions & 0 deletions src/main/java/com/descope/model/sso/OIDCAttributeMapping.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.descope.model.sso;

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

/**
* Represents a SAML mapping between Descope and IDP user attributes.
slavikm marked this conversation as resolved.
Show resolved Hide resolved
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OIDCAttributeMapping {
private String loginId;
private String name;
private String givenName;
private String middleName;
private String familyName;
private String email;
private String verifiedEmail;
private String username;
private String phoneNumber;
private String verifiedPhone;
private String picture;
}
3 changes: 1 addition & 2 deletions src/main/java/com/descope/model/sso/RoleMapping.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
@NoArgsConstructor
@AllArgsConstructor
public class RoleMapping {

private List<String> groups;
private String role;
private String roleName;
slavikm marked this conversation as resolved.
Show resolved Hide resolved
}
31 changes: 31 additions & 0 deletions src/main/java/com/descope/model/sso/SSOOIDCSettings.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.descope.model.sso;

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
public class SSOOIDCSettings {
private String name;
private String clientId;
private String clientSecret;
private String redirectUrl;
private String authUrl;
private String tokenUrl;
private String userDataUrl;
private List<String> scope;
@JsonProperty("JWKsUrl")
private String jwksUrl;
private OIDCAttributeMapping userAttrMapping;
private Boolean manageProviderTokens;
private String callbackDomain;
private List<String> prompt;
private String grantType;
private String issuer;
}
19 changes: 19 additions & 0 deletions src/main/java/com/descope/model/sso/SSOSAMLSettings.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.descope.model.sso;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SSOSAMLSettings {
private String idpUrl;
private String entityId;
private String idpCert;
private AttributeMapping attributeMapping;
private List<RoleMapping> roleMappings;
}
17 changes: 17 additions & 0 deletions src/main/java/com/descope/model/sso/SSOSAMLSettingsByMetadata.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.descope.model.sso;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SSOSAMLSettingsByMetadata {
private String idpMetadataUrl;
private AttributeMapping attributeMapping;
private List<RoleMapping> roleMappings;
}
24 changes: 24 additions & 0 deletions src/main/java/com/descope/model/sso/SSOSAMLSettingsResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.descope.model.sso;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SSOSAMLSettingsResponse {
private String idpEntityId;
private String idpSSOUrl;
private String idpCertificate;
private String idpMetadataUrl;
private String spEntityId;
private String spACSUrl;
private String spCertificate;
private AttributeMapping attributeMapping;
private List<GroupsMapping> groupsMapping;
private String redirectUrl;
}
17 changes: 17 additions & 0 deletions src/main/java/com/descope/model/sso/SSOTenantSettingsResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.descope.model.sso;

import com.descope.model.tenant.Tenant;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SSOTenantSettingsResponse {
private Tenant tenant;
private SSOSAMLSettingsResponse saml;
private SSOOIDCSettings oidc;
}
37 changes: 37 additions & 0 deletions src/main/java/com/descope/model/ssoapp/OIDCApplicationRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.descope.model.ssoapp;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OIDCApplicationRequest {
/**
* Optional ID that if given must be unique per project. Will be generated if not given.
*/
private String id;
/**
* The sso application's name. Must be unique per project.
*/
private String name;
/**
* Optional sso application description.
*/
private String description;
/**
* Optional set the sso application as enabled or disabled.
*/
private Boolean enabled;
/**
* Optional sso application logo.
*/
private String logo;
/**
* The URL where login page is hosted.
*/
private String loginPageUrl;
}
Loading
Loading