diff --git a/attributemap/name2urn.php b/attributemap/name2urn.php index 477f6c665cc71ff35acd21ca42ded680dac0cd73..9286f6fe3b9a25b246512d5ccfaeaf56bcf5dfea 100644 --- a/attributemap/name2urn.php +++ b/attributemap/name2urn.php @@ -112,6 +112,7 @@ $attributemap = array( 'owner' => 'urn:mace:dir:attribute-def:owner', 'pager' => 'urn:mace:dir:attribute-def:pager', 'pagerTelephoneNumber' => 'urn:mace:dir:attribute-def:pagerTelephoneNumber', + 'pairwise-id' => 'urn:oasis:names:tc:SAML:attribute:pairwise-id', 'personalSignature' => 'urn:mace:dir:attribute-def:personalSignature', 'personalTitle' => 'urn:mace:dir:attribute-def:personalTitle', 'photo' => 'urn:mace:dir:attribute-def:photo', @@ -163,6 +164,7 @@ $attributemap = array( 'stateOrProvinceName' => 'urn:mace:dir:attribute-def:stateOrProvinceName', 'street' => 'urn:mace:dir:attribute-def:street', 'streetAddress' => 'urn:mace:dir:attribute-def:streetAddress', + 'subject-id' => 'urn:oasis:names:tc:SAML:attribute:subject-id', 'subtreeMaximumQuality' => 'urn:mace:dir:attribute-def:subtreeMaximumQuality', 'subtreeMinimumQuality' => 'urn:mace:dir:attribute-def:subtreeMinimumQuality', 'supportedAlgorithms' => 'urn:mace:dir:attribute-def:supportedAlgorithms', diff --git a/attributemap/urn2name.php b/attributemap/urn2name.php index 66cd8589abe2a59ea7937acafef86f7dc8e3bd4f..fc8d4d97db5a0de8cfaeb2c21ac6b1907b71174d 100644 --- a/attributemap/urn2name.php +++ b/attributemap/urn2name.php @@ -184,4 +184,6 @@ $attributemap = array( 'urn:mace:terena.org:attribute-def:schacUserPresenceID' => 'schacUserPresenceID', 'urn:mace:terena.org:attribute-def:schacUserPrivateAttribute' => 'schacUserPrivateAttribute', 'urn:mace:terena.org:attribute-def:schacUserStatus' => 'schacUserStatus', + 'urn:oasis:names:tc:SAML:attribute:pairwise-id' => 'pairwise-id', + 'urn:oasis:names:tc:SAML:attribute:subject-id' => 'subject-id', ); diff --git a/dictionaries/attributes.definition.json b/dictionaries/attributes.definition.json index c04dcfc27d2ef427ea6351e32b451bc48a2f9c79..ee886676522c86d4f75a924c9bc590838ac7c648 100644 --- a/dictionaries/attributes.definition.json +++ b/dictionaries/attributes.definition.json @@ -47,12 +47,18 @@ "attribute_edupersontargetedid": { "en": "Persistent pseudonymous ID" }, + "attribute_pairwise_id": { + "en": "Service-specific pseudonymous ID at home organization" + }, "attribute_edupersonprincipalname": { "en": "Person's principal name at home organization" }, "attribute_edupersonuniqueid": { "en": "Person's non-reassignable, persistent pseudonymous ID at home organization" }, + "attribute_subject_id": { + "en": "Pseudonymous ID at home organization" + }, "attribute_edupersonorcid": { "en": "ORCID researcher identifiers" }, diff --git a/dictionaries/attributes.translation.json b/dictionaries/attributes.translation.json index 3e6b7cbec5c9bb26c9a407ea3e6bb604b783b6e5..4b859cf4f704553397cf06e7340b85817b8b6a5b 100644 --- a/dictionaries/attributes.translation.json +++ b/dictionaries/attributes.translation.json @@ -566,6 +566,9 @@ "af": "Aanhoudende anonieme ID", "el": "\u0391\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03bc\u03b1\u03ba\u03c1\u03ac\u03c2 \u03b4\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1\u03c2" }, + "attribute_pairwise_id": { + "de": "Service-spezifische pseudonyme ID bei der Heimorganisation" + }, "attribute_edupersonprincipalname": { "no": "Personlig ID hos organisasjonen", "nn": "Brukarnamn hos din organisasjon", @@ -608,6 +611,9 @@ "zh-tw": "\u500b\u4eba\u7121\u6cd5\u91cd\u65b0\u8a2d\u7f6e\uff0c\u65bc\u6240\u5c6c\u7d44\u7e54\u7684\u6c38\u4e45\u533f\u540d ID", "el": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf, \u03b1\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc" }, + "attribute_subject_id": { + "de": "Pseudonyme ID bei der Heimorganisation" + }, "attribute_edupersonorcid": { "zh-tw": "ORCID \u7814\u7a76\u8005\u8b58\u5225\u78bc", "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03b5\u03c1\u03b5\u03c5\u03bd\u03b7\u03c4\u03ae ORCID" diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php index 9f20168fa39e44f75fbd0eb76263e839454a8fab..0e52228a1deb6221acb4ad1c29f3aa3de40a6b6c 100644 --- a/lib/SimpleSAML/Locale/Translate.php +++ b/lib/SimpleSAML/Locale/Translate.php @@ -198,7 +198,7 @@ class Translate { // normalize attribute name $normName = strtolower($name); - $normName = str_replace(":", "_", $normName); + $normName = str_replace(array(":", "-"), "_", $normName); // check for an extra dictionary $extraDict = $this->configuration->getString('attributes.extradictionary', null); diff --git a/modules/smartattributes/docs/smartattributes.md b/modules/smartattributes/docs/smartattributes.md index f6015259ad84b24383befef73c1420956ae0ea4b..06fd24141088bb8db5c8c86246989c42c5b8728e 100644 --- a/modules/smartattributes/docs/smartattributes.md +++ b/modules/smartattributes/docs/smartattributes.md @@ -17,6 +17,8 @@ The filter has the following configuration options: * `candidates`. An array of attributes names to consider as the identifier attribute. Defaults to: * eduPersonTargetedID * eduPersonPrincipalName + * pairwise-id + * subject-id * openid * facebook_targetedID * twitter_targetedID diff --git a/modules/smartattributes/lib/Auth/Process/SmartID.php b/modules/smartattributes/lib/Auth/Process/SmartID.php index 2dbde82f9a3da941421b7e3b87b7837cf97126fe..4a23cf7c6159edb7dc2bbbd8e2a05246c5bbfffc 100644 --- a/modules/smartattributes/lib/Auth/Process/SmartID.php +++ b/modules/smartattributes/lib/Auth/Process/SmartID.php @@ -14,6 +14,8 @@ class SmartID extends \SimpleSAML\Auth\ProcessingFilter private $_candidates = array( 'eduPersonTargetedID', 'eduPersonPrincipalName', + 'pairwise-id', + 'subject-id', 'openid', 'facebook_targetedID', 'twitter_targetedID',