SAML2.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. __author__ = 'rolandh'
  2. EDUPERSON_OID = "urn:oid:1.3.6.1.4.1.5923.1.1.1."
  3. X500ATTR_OID = "urn:oid:2.5.4."
  4. NOREDUPERSON_OID = "urn:oid:1.3.6.1.4.1.2428.90.1."
  5. NETSCAPE_LDAP = "urn:oid:2.16.840.1.113730.3.1."
  6. UCL_DIR_PILOT = 'urn:oid:0.9.2342.19200300.100.1.'
  7. PKCS_9 = "urn:oid:1.2.840.113549.1.9.1."
  8. UMICH = "urn:oid:1.3.6.1.4.1.250.1.57."
  9. SCHAC = "urn:oid:1.3.6.1.4.1.25178.2."
  10. MAP = {
  11. "identifier": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri",
  12. "fro": {
  13. EDUPERSON_OID+'2': 'eduPersonNickname',
  14. EDUPERSON_OID+'9': 'eduPersonScopedAffiliation',
  15. EDUPERSON_OID+'11': 'eduPersonAssurance',
  16. EDUPERSON_OID+'10': 'eduPersonTargetedID',
  17. EDUPERSON_OID+'4': 'eduPersonOrgUnitDN',
  18. NOREDUPERSON_OID+'6': 'norEduOrgAcronym',
  19. NOREDUPERSON_OID+'7': 'norEduOrgUniqueIdentifier',
  20. NOREDUPERSON_OID+'4': 'norEduPersonLIN',
  21. EDUPERSON_OID+'1': 'eduPersonAffiliation',
  22. NOREDUPERSON_OID+'2': 'norEduOrgUnitUniqueNumber',
  23. NETSCAPE_LDAP+'40': 'userSMIMECertificate',
  24. NOREDUPERSON_OID+'1': 'norEduOrgUniqueNumber',
  25. NETSCAPE_LDAP+'241': 'displayName',
  26. UCL_DIR_PILOT+'37': 'associatedDomain',
  27. EDUPERSON_OID+'6': 'eduPersonPrincipalName',
  28. NOREDUPERSON_OID+'8': 'norEduOrgUnitUniqueIdentifier',
  29. NOREDUPERSON_OID+'9': 'federationFeideSchemaVersion',
  30. X500ATTR_OID+'53': 'deltaRevocationList',
  31. X500ATTR_OID+'52': 'supportedAlgorithms',
  32. X500ATTR_OID+'51': 'houseIdentifier',
  33. X500ATTR_OID+'50': 'uniqueMember',
  34. X500ATTR_OID+'19': 'physicalDeliveryOfficeName',
  35. X500ATTR_OID+'18': 'postOfficeBox',
  36. X500ATTR_OID+'17': 'postalCode',
  37. X500ATTR_OID+'16': 'postalAddress',
  38. X500ATTR_OID+'15': 'businessCategory',
  39. X500ATTR_OID+'14': 'searchGuide',
  40. EDUPERSON_OID+'5': 'eduPersonPrimaryAffiliation',
  41. X500ATTR_OID+'12': 'title',
  42. X500ATTR_OID+'11': 'ou',
  43. X500ATTR_OID+'10': 'o',
  44. X500ATTR_OID+'37': 'cACertificate',
  45. X500ATTR_OID+'36': 'userCertificate',
  46. X500ATTR_OID+'31': 'member',
  47. X500ATTR_OID+'30': 'supportedApplicationContext',
  48. X500ATTR_OID+'33': 'roleOccupant',
  49. X500ATTR_OID+'32': 'owner',
  50. NETSCAPE_LDAP+'1': 'carLicense',
  51. PKCS_9+'1': 'email',
  52. NETSCAPE_LDAP+'3': 'employeeNumber',
  53. NETSCAPE_LDAP+'2': 'departmentNumber',
  54. X500ATTR_OID+'39': 'certificateRevocationList',
  55. X500ATTR_OID+'38': 'authorityRevocationList',
  56. NETSCAPE_LDAP+'216': 'userPKCS12',
  57. EDUPERSON_OID+'8': 'eduPersonPrimaryOrgUnitDN',
  58. X500ATTR_OID+'9': 'street',
  59. X500ATTR_OID+'8': 'st',
  60. NETSCAPE_LDAP+'39': 'preferredLanguage',
  61. EDUPERSON_OID+'7': 'eduPersonEntitlement',
  62. X500ATTR_OID+'2': 'knowledgeInformation',
  63. X500ATTR_OID+'7': 'l',
  64. X500ATTR_OID+'6': 'c',
  65. X500ATTR_OID+'5': 'serialNumber',
  66. X500ATTR_OID+'4': 'sn',
  67. UCL_DIR_PILOT+'60': 'jpegPhoto',
  68. X500ATTR_OID+'65': 'pseudonym',
  69. NOREDUPERSON_OID+'5': 'norEduPersonNIN',
  70. UCL_DIR_PILOT+'3': 'mail',
  71. UCL_DIR_PILOT+'25': 'dc',
  72. X500ATTR_OID+'40': 'crossCertificatePair',
  73. X500ATTR_OID+'42': 'givenName',
  74. X500ATTR_OID+'43': 'initials',
  75. X500ATTR_OID+'44': 'generationQualifier',
  76. X500ATTR_OID+'45': 'x500UniqueIdentifier',
  77. X500ATTR_OID+'46': 'dnQualifier',
  78. X500ATTR_OID+'47': 'enhancedSearchGuide',
  79. X500ATTR_OID+'48': 'protocolInformation',
  80. X500ATTR_OID+'54': 'dmdName',
  81. NETSCAPE_LDAP+'4': 'employeeType',
  82. X500ATTR_OID+'22': 'teletexTerminalIdentifier',
  83. X500ATTR_OID+'23': 'facsimileTelephoneNumber',
  84. X500ATTR_OID+'20': 'telephoneNumber',
  85. X500ATTR_OID+'21': 'telexNumber',
  86. X500ATTR_OID+'26': 'registeredAddress',
  87. X500ATTR_OID+'27': 'destinationIndicator',
  88. X500ATTR_OID+'24': 'x121Address',
  89. X500ATTR_OID+'25': 'internationaliSDNNumber',
  90. X500ATTR_OID+'28': 'preferredDeliveryMethod',
  91. X500ATTR_OID+'29': 'presentationAddress',
  92. EDUPERSON_OID+'3': 'eduPersonOrgDN',
  93. NOREDUPERSON_OID+'3': 'norEduPersonBirthDate',
  94. UMICH+'57': 'labeledURI',
  95. UCL_DIR_PILOT+'1': 'uid',
  96. SCHAC+'1': 'schacMotherTongue',
  97. SCHAC+'2': 'schacGender',
  98. SCHAC+'3': 'schacDateOfBirth',
  99. SCHAC+'4': 'schacPlaceOfBirth',
  100. SCHAC+'5': 'schacCountryOfCitizenship',
  101. SCHAC+'6': 'schacSn1',
  102. SCHAC+'7': 'schacSn2',
  103. SCHAC+'8': 'schacPersonalTitle',
  104. SCHAC+'9': 'schacHomeOrganization',
  105. SCHAC+'10': 'schacHomeOrganizationType',
  106. SCHAC+'11': 'schacCountryOfResidence',
  107. SCHAC+'12': 'schacUserPresenceID',
  108. SCHAC+'13': 'schacPersonalPosition',
  109. SCHAC+'14': 'schacPersonalUniqueCode',
  110. SCHAC+'15': 'schacPersonalUniqueID',
  111. SCHAC+'17': 'schacExpiryDate',
  112. SCHAC+'18': 'schacUserPrivateAttribute',
  113. SCHAC+'19': 'schacUserStatus',
  114. SCHAC+'20': 'schacProjectMembership',
  115. SCHAC+'21': 'schacProjectSpecificRole',
  116. },
  117. "to": {
  118. 'roleOccupant': X500ATTR_OID+'33',
  119. 'gn': X500ATTR_OID+'42',
  120. 'norEduPersonNIN': NOREDUPERSON_OID+'5',
  121. 'title': X500ATTR_OID+'12',
  122. 'facsimileTelephoneNumber': X500ATTR_OID+'23',
  123. 'mail': UCL_DIR_PILOT+'3',
  124. 'postOfficeBox': X500ATTR_OID+'18',
  125. 'fax': X500ATTR_OID+'23',
  126. 'telephoneNumber': X500ATTR_OID+'20',
  127. 'norEduPersonBirthDate': NOREDUPERSON_OID+'3',
  128. 'rfc822Mailbox': UCL_DIR_PILOT+'3',
  129. 'dc': UCL_DIR_PILOT+'25',
  130. 'countryName': X500ATTR_OID+'6',
  131. 'emailAddress': PKCS_9+'1',
  132. 'employeeNumber': NETSCAPE_LDAP+'3',
  133. 'organizationName': X500ATTR_OID+'10',
  134. 'eduPersonAssurance': EDUPERSON_OID+'11',
  135. 'norEduOrgAcronym': NOREDUPERSON_OID+'6',
  136. 'registeredAddress': X500ATTR_OID+'26',
  137. 'physicalDeliveryOfficeName': X500ATTR_OID+'19',
  138. 'associatedDomain': UCL_DIR_PILOT+'37',
  139. 'l': X500ATTR_OID+'7',
  140. 'stateOrProvinceName': X500ATTR_OID+'8',
  141. 'federationFeideSchemaVersion': NOREDUPERSON_OID+'9',
  142. 'pkcs9email': PKCS_9+'1',
  143. 'givenName': X500ATTR_OID+'42',
  144. 'givenname': X500ATTR_OID+'42',
  145. 'x500UniqueIdentifier': X500ATTR_OID+'45',
  146. 'eduPersonNickname': EDUPERSON_OID+'2',
  147. 'houseIdentifier': X500ATTR_OID+'51',
  148. 'street': X500ATTR_OID+'9',
  149. 'supportedAlgorithms': X500ATTR_OID+'52',
  150. 'preferredLanguage': NETSCAPE_LDAP+'39',
  151. 'postalAddress': X500ATTR_OID+'16',
  152. 'email': PKCS_9+'1',
  153. 'norEduOrgUnitUniqueIdentifier': NOREDUPERSON_OID+'8',
  154. 'eduPersonPrimaryOrgUnitDN': EDUPERSON_OID+'8',
  155. 'c': X500ATTR_OID+'6',
  156. 'teletexTerminalIdentifier': X500ATTR_OID+'22',
  157. 'o': X500ATTR_OID+'10',
  158. 'cACertificate': X500ATTR_OID+'37',
  159. 'telexNumber': X500ATTR_OID+'21',
  160. 'ou': X500ATTR_OID+'11',
  161. 'initials': X500ATTR_OID+'43',
  162. 'eduPersonOrgUnitDN': EDUPERSON_OID+'4',
  163. 'deltaRevocationList': X500ATTR_OID+'53',
  164. 'norEduPersonLIN': NOREDUPERSON_OID+'4',
  165. 'supportedApplicationContext': X500ATTR_OID+'30',
  166. 'eduPersonEntitlement': EDUPERSON_OID+'7',
  167. 'generationQualifier': X500ATTR_OID+'44',
  168. 'eduPersonAffiliation': EDUPERSON_OID+'1',
  169. 'edupersonaffiliation': EDUPERSON_OID+'1',
  170. 'eduPersonPrincipalName': EDUPERSON_OID+'6',
  171. 'edupersonprincipalname': EDUPERSON_OID+'6',
  172. 'localityName': X500ATTR_OID+'7',
  173. 'owner': X500ATTR_OID+'32',
  174. 'norEduOrgUnitUniqueNumber': NOREDUPERSON_OID+'2',
  175. 'searchGuide': X500ATTR_OID+'14',
  176. 'certificateRevocationList': X500ATTR_OID+'39',
  177. 'organizationalUnitName': X500ATTR_OID+'11',
  178. 'userCertificate': X500ATTR_OID+'36',
  179. 'preferredDeliveryMethod': X500ATTR_OID+'28',
  180. 'internationaliSDNNumber': X500ATTR_OID+'25',
  181. 'uniqueMember': X500ATTR_OID+'50',
  182. 'departmentNumber': NETSCAPE_LDAP+'2',
  183. 'enhancedSearchGuide': X500ATTR_OID+'47',
  184. 'userPKCS12': NETSCAPE_LDAP+'216',
  185. 'eduPersonTargetedID': EDUPERSON_OID+'10',
  186. 'norEduOrgUniqueNumber': NOREDUPERSON_OID+'1',
  187. 'x121Address': X500ATTR_OID+'24',
  188. 'destinationIndicator': X500ATTR_OID+'27',
  189. 'eduPersonPrimaryAffiliation': EDUPERSON_OID+'5',
  190. 'surname': X500ATTR_OID+'4',
  191. 'jpegPhoto': UCL_DIR_PILOT+'60',
  192. 'eduPersonScopedAffiliation': EDUPERSON_OID+'9',
  193. 'edupersonscopedaffiliation': EDUPERSON_OID+'9',
  194. 'protocolInformation': X500ATTR_OID+'48',
  195. 'knowledgeInformation': X500ATTR_OID+'2',
  196. 'employeeType': NETSCAPE_LDAP+'4',
  197. 'userSMIMECertificate': NETSCAPE_LDAP+'40',
  198. 'member': X500ATTR_OID+'31',
  199. 'streetAddress': X500ATTR_OID+'9',
  200. 'dmdName': X500ATTR_OID+'54',
  201. 'postalCode': X500ATTR_OID+'17',
  202. 'pseudonym': X500ATTR_OID+'65',
  203. 'dnQualifier': X500ATTR_OID+'46',
  204. 'crossCertificatePair': X500ATTR_OID+'40',
  205. 'eduPersonOrgDN': EDUPERSON_OID+'3',
  206. 'authorityRevocationList': X500ATTR_OID+'38',
  207. 'displayName': NETSCAPE_LDAP+'241',
  208. 'businessCategory': X500ATTR_OID+'15',
  209. 'serialNumber': X500ATTR_OID+'5',
  210. 'norEduOrgUniqueIdentifier': NOREDUPERSON_OID+'7',
  211. 'st': X500ATTR_OID+'8',
  212. 'carLicense': NETSCAPE_LDAP+'1',
  213. 'presentationAddress': X500ATTR_OID+'29',
  214. 'sn': X500ATTR_OID+'4',
  215. 'domainComponent': UCL_DIR_PILOT+'25',
  216. 'labeledURI': UMICH+'57',
  217. 'uid': UCL_DIR_PILOT+'1',
  218. 'schacMotherTongue':SCHAC+'1',
  219. 'schacGender': SCHAC+'2',
  220. 'schacDateOfBirth':SCHAC+'3',
  221. 'schacPlaceOfBirth': SCHAC+'4',
  222. 'schacCountryOfCitizenship':SCHAC+'5',
  223. 'schacSn1': SCHAC+'6',
  224. 'schacSn2': SCHAC+'7',
  225. 'schacPersonalTitle':SCHAC+'8',
  226. 'schacHomeOrganization': SCHAC+'9',
  227. 'schacHomeOrganizationType': SCHAC+'10',
  228. 'schacCountryOfResidence': SCHAC+'11',
  229. 'schacUserPresenceID': SCHAC+'12',
  230. 'schacPersonalPosition': SCHAC+'13',
  231. 'schacPersonalUniqueCode': SCHAC+'14',
  232. 'schacPersonalUniqueID': SCHAC+'15',
  233. 'schacExpiryDate': SCHAC+'17',
  234. 'schacUserPrivateAttribute': SCHAC+'18',
  235. 'schacUserStatus': SCHAC+'19',
  236. 'schacProjectMembership': SCHAC+'20',
  237. 'schacProjectSpecificRole': SCHAC+'21',
  238. }
  239. }