SCIM 2.0 init

This commit is contained in:
shimingxy 2020-06-13 09:27:20 +08:00
parent cd249a54a6
commit d0b49e0c03
31 changed files with 800 additions and 7 deletions

View File

@ -86,4 +86,10 @@ QQ交流群<b>434469201</b> | 邮箱EMAIL: <b>shimingxy@163.com</b>
| v 1.3.0 GA | 2020/04/04 | <a href="https://pan.baidu.com/s/1o7vfBeq21Az_0s0tJvObOw" target="_blank">链接下载</a> | **20bj** |
| v 1.2.1 GA | 2020/02/29 | <a href="https://pan.baidu.com/s/1FDkJ4DOMQq8tPAXrIfDeKA" target="_blank">链接下载</a> | **yutq** |
| v 1.2.0 GA | 2020/01/18 | <a href="https://pan.baidu.com/s/1NDeB_g_-6Qbn_bHkTGnFGA" target="_blank">链接下载</a> | **6bda** |
| v 1.0 GA | 2019/12/06 | <a href="https://pan.baidu.com/s/15j7RSUQybCVlHx8uyFk2rQ" target="_blank">链接下载</a> | **g17z** |
| v 1.0 GA | 2019/12/06 | <a href="https://pan.baidu.com/s/15j7RSUQybCVlHx8uyFk2rQ" target="_blank">链接下载</a> | **g17z** |
------------
# Roadmap
SCIM 2 Support-System for Cross-domain Identity Management
Apache Kafka Support

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
<classpathentry kind="output" path="bin/default"/>
</classpath>

23
maxkey-identitys/.project Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>maxkey-identitys</name>
<comment>Project maxkey-identitys created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="bin/main" path="src/main/java">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/main" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
<attributes>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin/default"/>
</classpath>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>maxkey-identity-scim</name>
<comment>Project maxkey-identity-scim created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,2 @@
connection.project.dir=../..
eclipse.preferences.version=1

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="maxkey-identity-scim">
<wb-resource deploy-path="/" source-path="src/main/resources"/>
<wb-resource deploy-path="/" source-path="src/main/java"/>
<wb-resource deploy-path="/" source-path="/src/main/java"/>
<wb-resource deploy-path="/" source-path="/src/main/resources"/>
<dependent-module deploy-path="../" handle="module:/resource/maxkey-core/maxkey-core">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="../" handle="module:/resource/maxkey-dao/maxkey-dao">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="../" handle="module:/resource/maxkey-client-sdk/maxkey-client-sdk">
<dependency-type>uses</dependency-type>
</dependent-module>
</wb-module>
</project-modules>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="jst.java"/>
<installed facet="jst.utility" version="1.0"/>
<installed facet="jst.java" version="1.8"/>
</faceted-project>

View File

@ -0,0 +1,2 @@
boot.validation.initialized=true
eclipse.preferences.version=1

View File

@ -0,0 +1,15 @@
description = "maxkey-identity-scim"
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
dependencies {
//local jars
compile fileTree(dir: '../maxkey-lib/*/', include: '*.jar')
compile project(":maxkey-core")
compile project(":maxkey-dao")
compile project(":maxkey-client-sdk")
}

View File

@ -0,0 +1,55 @@
package org.maxkey.identity.scim.resources;
public class EnterpriseUser extends User {
/**
*
*/
private static final long serialVersionUID = 3212312511630459427L;
private String employeeNumber;
private String costCenter;
private String organization;
private String division;
private String department;
private Manager manager;
public String getEmployeeNumber() {
return employeeNumber;
}
public void setEmployeeNumber(String employeeNumber) {
this.employeeNumber = employeeNumber;
}
public String getCostCenter() {
return costCenter;
}
public void setCostCenter(String costCenter) {
this.costCenter = costCenter;
}
public String getOrganization() {
return organization;
}
public void setOrganization(String organization) {
this.organization = organization;
}
public String getDivision() {
return division;
}
public void setDivision(String division) {
this.division = division;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public Manager getManager() {
return manager;
}
public void setManager(Manager manager) {
this.manager = manager;
}
public EnterpriseUser() {
}
}

View File

@ -0,0 +1,26 @@
package org.maxkey.identity.scim.resources;
import java.util.Set;
public class Group {
public static final String SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:Group";
private String displayName;
private Set<MemberRef> members;
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public Set<MemberRef> getMembers() {
return members;
}
public void setMembers(Set<MemberRef> members) {
this.members = members;
}
public Group() {
}
}

View File

@ -0,0 +1,5 @@
package org.maxkey.identity.scim.resources;
public class GroupRef {
}

View File

@ -0,0 +1,27 @@
package org.maxkey.identity.scim.resources;
public class Manager {
private String managerId;
private String displayName;
public String getManagerId() {
return managerId;
}
public void setManagerId(String managerId) {
this.managerId = managerId;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public Manager() {
}
public Manager(String managerId, String displayName) {
super();
this.managerId = managerId;
this.displayName = displayName;
}
}

View File

@ -0,0 +1,5 @@
package org.maxkey.identity.scim.resources;
public class MemberRef {
}

View File

@ -0,0 +1,73 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
public class Meta implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2244662962968933591L;
private String resourceType;
private Date created;
private Date lastModified;
private String location;
private String version;
private Set<String> attributes;
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getLastModified() {
return lastModified;
}
public void setLastModified(Date lastModified) {
this.lastModified = lastModified;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public Set<String> getAttributes() {
return attributes;
}
public void setAttributes(Set<String> attributes) {
this.attributes = attributes;
}
public String getResourceType() {
return resourceType;
}
public void setResourceType(String resourceType) {
this.resourceType = resourceType;
}
public Meta() {
}
public Meta(String resourceType, Date created, Date lastModified, String location, String version,
Set<String> attributes) {
super();
this.resourceType = resourceType;
this.created = created;
this.lastModified = lastModified;
this.location = location;
this.version = version;
this.attributes = attributes;
}
}

View File

@ -0,0 +1,53 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
import java.util.Set;
public class Resource implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5159743553948621024L;
private String id;
private String externalId;
private Meta meta;
private Set<String> schemas;
public Resource() {
}
public Resource(String id, String externalId, Meta meta, Set<String> schemas) {
super();
this.id = id;
this.externalId = externalId;
this.meta = meta;
this.schemas = schemas;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getExternalId() {
return externalId;
}
public void setExternalId(String externalId) {
this.externalId = externalId;
}
public Meta getMeta() {
return meta;
}
public void setMeta(Meta meta) {
this.meta = meta;
}
public Set<String> getSchemas() {
return schemas;
}
public void setSchemas(Set<String> schemas) {
this.schemas = schemas;
}
}

View File

@ -0,0 +1,183 @@
package org.maxkey.identity.scim.resources;
import java.util.List;
import java.util.Map;
public class User extends Resource{
/**
*
*/
private static final long serialVersionUID = -7478787809774041557L;
public static String SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:User";
private String userName;
private UserName name;
private String displayName;
private String nickName;
private String profileUrl;
private String title;
private String userType;
private String preferredLanguage;
private String locale;
private String timezone;
private Boolean active;
private String password;
private List<UserEmail> emails;
private List<UserPhoneNumber> phoneNumbers;
private List<UserIm> ims;
private List<UserPhoto> photos;
// Can't really validate that one. value is not acessible
private List<UserAddress> addresses;
private List<GroupRef> groups;
private List<UserEntitlement> entitlements;
private List<UserRole> roles;
private List<UserX509Certificate> x509Certificates;
private Map<String, UserExtension> extensions;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public UserName getName() {
return name;
}
public void setName(UserName name) {
this.name = name;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getProfileUrl() {
return profileUrl;
}
public void setProfileUrl(String profileUrl) {
this.profileUrl = profileUrl;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String getPreferredLanguage() {
return preferredLanguage;
}
public void setPreferredLanguage(String preferredLanguage) {
this.preferredLanguage = preferredLanguage;
}
public String getLocale() {
return locale;
}
public void setLocale(String locale) {
this.locale = locale;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public Boolean getActive() {
return active;
}
public void setActive(Boolean active) {
this.active = active;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<UserEmail> getEmails() {
return emails;
}
public void setEmails(List<UserEmail> emails) {
this.emails = emails;
}
public List<UserPhoneNumber> getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(List<UserPhoneNumber> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
public List<UserIm> getIms() {
return ims;
}
public void setIms(List<UserIm> ims) {
this.ims = ims;
}
public List<UserPhoto> getPhotos() {
return photos;
}
public void setPhotos(List<UserPhoto> photos) {
this.photos = photos;
}
public List<UserAddress> getAddresses() {
return addresses;
}
public void setAddresses(List<UserAddress> addresses) {
this.addresses = addresses;
}
public List<GroupRef> getGroups() {
return groups;
}
public void setGroups(List<GroupRef> groups) {
this.groups = groups;
}
public List<UserEntitlement> getEntitlements() {
return entitlements;
}
public void setEntitlements(List<UserEntitlement> entitlements) {
this.entitlements = entitlements;
}
public List<UserRole> getRoles() {
return roles;
}
public void setRoles(List<UserRole> roles) {
this.roles = roles;
}
public List<UserX509Certificate> getX509Certificates() {
return x509Certificates;
}
public void setX509Certificates(List<UserX509Certificate> x509Certificates) {
this.x509Certificates = x509Certificates;
}
public Map<String, UserExtension> getExtensions() {
return extensions;
}
public void setExtensions(Map<String, UserExtension> extensions) {
this.extensions = extensions;
}
public User() {
}
}

View File

@ -0,0 +1,64 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserAddress implements Serializable {
/**
*
*/
private static final long serialVersionUID = 7401597570364338298L;
private String formatted;
private String streetAddress;
private String locality;
private String region;
private String postalCode;
private String country;
private String type;
public String getFormatted() {
return formatted;
}
public void setFormatted(String formatted) {
this.formatted = formatted;
}
public String getStreetAddress() {
return streetAddress;
}
public void setStreetAddress(String streetAddress) {
this.streetAddress = streetAddress;
}
public String getLocality() {
return locality;
}
public void setLocality(String locality) {
this.locality = locality;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public UserAddress() {
}
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserEmail implements Serializable {
/**
*
*/
private static final long serialVersionUID = -41327146592552688L;
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserEntitlement implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2401447261875608884L;
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserExtension implements Serializable {
/**
*
*/
private static final long serialVersionUID = -451036186931007428L;
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserIm implements Serializable {
/**
*
*/
private static final long serialVersionUID = -529297556948872883L;
}

View File

@ -0,0 +1,67 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserName implements Serializable {
/**
*
*/
private static final long serialVersionUID = 2482724471550531523L;
private String formatted;
private String familyName;
private String givenName;
private String middleName;
private String honorificPrefix;
private String honorificSuffix;
public String getFormatted() {
return formatted;
}
public void setFormatted(String formatted) {
this.formatted = formatted;
}
public String getFamilyName() {
return familyName;
}
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
public String getGivenName() {
return givenName;
}
public void setGivenName(String givenName) {
this.givenName = givenName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getHonorificPrefix() {
return honorificPrefix;
}
public void setHonorificPrefix(String honorificPrefix) {
this.honorificPrefix = honorificPrefix;
}
public String getHonorificSuffix() {
return honorificSuffix;
}
public void setHonorificSuffix(String honorificSuffix) {
this.honorificSuffix = honorificSuffix;
}
public UserName(String formatted, String familyName, String givenName, String middleName, String honorificPrefix,
String honorificSuffix) {
super();
this.formatted = formatted;
this.familyName = familyName;
this.givenName = givenName;
this.middleName = middleName;
this.honorificPrefix = honorificPrefix;
this.honorificSuffix = honorificSuffix;
}
public UserName() {
}
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserPhoneNumber implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3201987266085144715L;
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserPhoto implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3796708555581889691L;
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserRole implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4482653235751625445L;
}

View File

@ -0,0 +1,12 @@
package org.maxkey.identity.scim.resources;
import java.io.Serializable;
public class UserX509Certificate implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5988790799054211553L;
}

View File

@ -25,17 +25,11 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
</natures>
</projectDescription>

View File

@ -9,6 +9,9 @@ include 'maxkey-core'
include 'maxkey-dao'
include 'maxkey-authentications'
//identity
include 'maxkey-identitys:maxkey-identity-scim'
//Protocol
//include 'maxkey-protocols'
include 'maxkey-protocols:maxkey-protocol-oauth-2.0'