use of io.jans.scim.model.scim2.Meta in project oxTrust by GluuFederation.
the class ServiceProviderConfigWS method serve.
@GET
@Produces(MEDIA_TYPE_SCIM_JSON + UTF8_CHARSET_FRAGMENT)
@HeaderParam("Accept")
@DefaultValue(MEDIA_TYPE_SCIM_JSON)
@RejectFilterParam
public Response serve() {
try {
ServiceProviderConfig serviceProviderConfig = new ServiceProviderConfig();
serviceProviderConfig.getFilter().setMaxResults(appConfiguration.getScimProperties().getMaxCount());
Meta meta = new Meta();
meta.setLocation(endpointUrl);
meta.setResourceType(ScimResourceUtil.getType(serviceProviderConfig.getClass()));
serviceProviderConfig.setMeta(meta);
boolean onTestMode = appConfiguration.isScimTestMode();
serviceProviderConfig.setAuthenticationSchemes(Arrays.asList(AuthenticationScheme.createOAuth2(onTestMode), AuthenticationScheme.createUma(!onTestMode)));
return Response.ok(resourceSerializer.serialize(serviceProviderConfig)).build();
} catch (Exception e) {
log.error(e.getMessage(), e);
return getErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, "Unexpected error: " + e.getMessage());
}
}
use of io.jans.scim.model.scim2.Meta in project oxTrust by GluuFederation.
the class Scim2GroupService method transferAttributesToGroupResource.
public void transferAttributesToGroupResource(GluuGroup gluuGroup, GroupResource res, String groupsUrl, String usersUrl) {
res.setId(gluuGroup.getInum());
Meta meta = new Meta();
meta.setResourceType(ScimResourceUtil.getType(res.getClass()));
meta.setCreated(gluuGroup.getAttribute("oxTrustMetaCreated"));
meta.setLastModified(gluuGroup.getAttribute("oxTrustMetaLastModified"));
meta.setLocation(gluuGroup.getAttribute("oxTrustMetaLocation"));
if (meta.getLocation() == null)
meta.setLocation(groupsUrl + "/" + gluuGroup.getInum());
res.setMeta(meta);
res.setDisplayName(gluuGroup.getDisplayName());
// Transfer members from GluuGroup to GroupResource
List<String> memberDNs = gluuGroup.getMembers();
if (memberDNs != null) {
Set<Member> members = new HashSet<Member>();
for (String dn : memberDNs) {
GluuCustomPerson person = null;
try {
person = personService.getPersonByDn(dn);
} catch (Exception e) {
log.warn("Wrong member entry {} found in group {}", dn, gluuGroup.getDisplayName());
}
if (person != null) {
Member aMember = new Member();
aMember.setValue(person.getInum());
aMember.setRef(usersUrl + "/" + person.getInum());
aMember.setType(ScimResourceUtil.getType(UserResource.class));
aMember.setDisplay(person.getDisplayName());
members.add(aMember);
}
}
res.setMembers(members);
}
}
use of io.jans.scim.model.scim2.Meta in project jans by JanssenProject.
the class ResourceTypeWS method fillResourceType.
private void fillResourceType(ResourceType rt, Schema schemaAnnot, String endpointUrl, String location, List<SchemaExtensionHolder> schemaExtensions) {
rt.setId(schemaAnnot.name());
rt.setName(schemaAnnot.name());
rt.setDescription(schemaAnnot.description());
rt.setEndpoint(endpointUrl.substring(appConfiguration.getBaseEndpoint().length()));
rt.setSchema(schemaAnnot.id());
rt.setSchemaExtensions(schemaExtensions);
Meta rtMeta = new Meta();
rtMeta.setLocation(location);
rtMeta.setResourceType("ResourceType");
rt.setMeta(rtMeta);
}
use of io.jans.scim.model.scim2.Meta in project jans by JanssenProject.
the class Scim2UserService method transferAttributesToUserResource.
public void transferAttributesToUserResource(ScimCustomPerson person, UserResource res, String url) {
log.debug("transferAttributesToUserResource");
res.setId(person.getInum());
res.setExternalId(person.getAttribute("jansExtId"));
Meta meta = new Meta();
meta.setResourceType(ScimResourceUtil.getType(res.getClass()));
meta.setCreated(person.getAttribute("jansMetaCreated"));
if (meta.getCreated() == null) {
Date date = person.getCreationDate();
meta.setCreated(date == null ? null : DateUtil.millisToISOString(date.getTime()));
}
meta.setLastModified(person.getAttribute("jansMetaLastMod"));
if (meta.getLastModified() == null) {
Date date = person.getUpdatedAt();
meta.setLastModified(date == null ? null : DateUtil.millisToISOString(date.getTime()));
}
meta.setLocation(person.getAttribute("jansMetaLocation"));
if (meta.getLocation() == null) {
meta.setLocation(url + "/" + person.getInum());
}
res.setMeta(meta);
// Set values in order of appearance in UserResource class
res.setUserName(person.getUid());
Name name = new Name();
name.setGivenName(person.getGivenName());
name.setFamilyName(person.getSurname());
name.setMiddleName(person.getAttribute("middleName"));
name.setHonorificPrefix(person.getAttribute("jansHonorificPrefix"));
name.setHonorificSuffix(person.getAttribute("jansHonorificSuffix"));
String formatted = person.getAttribute("jansNameFormatted");
if (formatted == null) {
// recomputes the formatted name if absent in LDAP
name.computeFormattedName();
} else {
name.setFormatted(formatted);
}
res.setName(name);
res.setDisplayName(person.getDisplayName());
res.setNickName(person.getAttribute("nickname"));
res.setProfileUrl(person.getAttribute("jansProfileURL"));
res.setTitle(person.getAttribute("jansTitle"));
res.setUserType(person.getAttribute("jansUsrTyp"));
res.setPreferredLanguage(person.getPreferredLanguage());
res.setLocale(person.getAttribute("locale"));
res.setTimezone(person.getTimezone());
res.setActive(Boolean.valueOf(person.getAttribute("jansActive")) || GluuBoolean.getByValue(person.getAttribute("jansStatus")).isBooleanValue());
res.setPassword(person.getUserPassword());
res.setEmails(getAttributeListValue(person, Email.class, "jansEmail"));
if (res.getEmails() == null) {
// There can be cases where jansEmail is not synced with mail attribute....
List<Email> emails = person.getAttributeList("mail").stream().map(m -> {
Email email = new Email();
email.setValue(m);
email.setPrimary(false);
return email;
}).collect(Collectors.toList());
res.setEmails(emails.size() == 0 ? null : emails);
}
res.setPhoneNumbers(getAttributeListValue(person, PhoneNumber.class, "jansPhoneValue"));
res.setIms(getAttributeListValue(person, InstantMessagingAddress.class, "jansImsValue"));
res.setPhotos(getAttributeListValue(person, Photo.class, "jansPhotos"));
res.setAddresses(getAttributeListValue(person, Address.class, "jansAddres"));
List<String> listOfGroups = person.getMemberOf();
if (listOfGroups != null && listOfGroups.size() > 0) {
List<Group> groupList = new ArrayList<>();
for (String groupDN : listOfGroups) {
try {
GluuGroup gluuGroup = groupService.getGroupByDn(groupDN);
Group group = new Group();
group.setValue(gluuGroup.getInum());
String reference = groupEndpointUrl + "/" + gluuGroup.getInum();
group.setRef(reference);
group.setDisplay(gluuGroup.getDisplayName());
// Only support direct membership: see section 4.1.2 of RFC 7644
group.setType(Group.Type.DIRECT);
groupList.add(group);
} catch (Exception e) {
log.warn("transferAttributesToUserResource. Group with dn {} could not be added to User Resource. {}", groupDN, person.getUid());
log.error(e.getMessage(), e);
}
}
if (groupList.size() > 0) {
res.setGroups(groupList);
}
}
res.setEntitlements(getAttributeListValue(person, Entitlement.class, "jansEntitlements"));
res.setRoles(getAttributeListValue(person, Role.class, "jansRole"));
res.setX509Certificates(getAttributeListValue(person, X509Certificate.class, "jansx509Certificate"));
res.setPairwiseIdentifiers(person.getPpid());
transferExtendedAttributesToResource(person, res);
}
use of io.jans.scim.model.scim2.Meta in project jans by JanssenProject.
the class Scim2GroupService method transferAttributesToGroupResource.
public void transferAttributesToGroupResource(GluuGroup gluuGroup, GroupResource res, boolean fillMembersDisplay, String groupsUrl, String usersUrl) {
res.setId(gluuGroup.getInum());
Meta meta = new Meta();
meta.setResourceType(ScimResourceUtil.getType(res.getClass()));
meta.setCreated(gluuGroup.getAttribute("jansMetaCreated"));
meta.setLastModified(gluuGroup.getAttribute("jansMetaLastMod"));
meta.setLocation(gluuGroup.getAttribute("jansMetaLocation"));
if (meta.getLocation() == null)
meta.setLocation(groupsUrl + "/" + gluuGroup.getInum());
res.setMeta(meta);
res.setDisplayName(gluuGroup.getDisplayName());
// Transfer members from GluuGroup to GroupResource
List<String> memberDNs = gluuGroup.getMembers();
if (memberDNs != null) {
Set<Member> members = new HashSet<>();
for (String dn : memberDNs) {
GluuCustomPerson person = null;
if (fillMembersDisplay) {
try {
person = personService.getPersonByDn(dn);
} catch (Exception e) {
log.warn("Wrong member entry {} found in group {}", dn, gluuGroup.getDisplayName());
}
}
if (person == null) {
person = new GluuCustomPerson();
person.setInum(userPersistenceHelper.getUserInumFromDN(dn));
}
Member aMember = new Member();
aMember.setValue(person.getInum());
aMember.setRef(usersUrl + "/" + person.getInum());
aMember.setType(ScimResourceUtil.getType(UserResource.class));
aMember.setDisplay(person.getDisplayName());
members.add(aMember);
}
res.setMembers(members);
}
}
Aggregations