Many Social Identity Providers, One Schema
Most social identity providers include common properties, such as name, email address, icon configuration, and location.
IDM includes two sets of property maps that translate information from a social identity provider to your managed user objects. These property maps are as follows:
The
identityProviders.json
file includes apropertyMap
code block for each supported provider. This file maps properties from the provider to a generic managed user object. You should not customize this file.The
selfservice.propertymap.json
file translates the generic managed user properties to the managed user schema that you have defined inmanaged.json
. If you have customized the managed user schema, this is the file that you must change, to indicate how your custom schema maps to the generic managed user schema.
Examine the conf/identityProviders.json
file. The following excerpt shows the Facebook propertyMap
from that file:
"propertyMap" : [ { "source" : "id", "target" : "id" }, { "source" : "name", "target" : "displayName" }, { "source" : "first_name", "target" : "givenName" }, { "source" : "last_name", "target" : "familyName" }, { "source" : "email", "target" : "email" }, { "source" : "email", "target" : "username" }, { "source" : "locale", "target" : "locale" } ]
The source lists the Facebook property, the target lists the corresponding property for a generic managed user.
IDM then processes that information through the selfservice.propertymap.json
file, where the source corresponds to the generic managed user and the target corresponds to your customized managed user schema (defined in your project's managed.json
file).
{ "properties" : [ { "source" : "givenName", "target" : "givenName" }, { "source" : "familyName", "target" : "sn" }, { "source" : "email", "target" : "mail" }, { "source" : "postalAddress", "target" : "postalAddress", "condition" : "/object/postalAddress pr" }, { "source" : "addressLocality", "target" : "city", "condition" : "/object/addressLocality pr" }, { "source" : "addressRegion", "target" : "stateProvince", "condition" : "/object/addressRegion pr" }, { "source" : "postalCode", "target" : "postalCode", "condition" : "/object/postalCode pr" }, { "source" : "country", "target" : "country", "condition" : "/object/country pr" }, { "source" : "phone", "target" : "telephoneNumber", "condition" : "/object/phone pr" }, { "source" : "username", "target" : "userName" } ] }
Tip
To take additional information from a social identity provider, make sure the property is mapped through the identityProviders.json
and selfservice.propertymap.json
files.
Several of the property mappings include a pr
presence expression which is a filter that returns all records with the given attribute. For more information, see "Presence Expressions".