You are here

README.developers.txt in Lightweight Directory Access Protocol (LDAP) 8.2

Same filename in this branch
  1. 8.2 README.developers.txt
  2. 8.2 ldap_user/README.developers.txt
Same filename and directory in other branches
  1. 7.2 ldap_user/README.developers.txt
provisioning = creating or synching ... to drupal or to ldap



==========================================
LDAP User Data Structures in Drupal User Object
==========================================


'data' => 
  array (
    'ldap_user' => 
    array (
      'init' => 
      array (
        'sid' => 'activedirectory1',
        'dn' => 'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
        'mail' => 'hpotter@hogwarts.edu',
      ),
    ),
    'ldap_authorizations' => 
    array (
      'drupal_role' => 
      array (
        'cn=gryffindor,ou=groups,dc=hogwarts,dc=edu' => 
        array (
          'date_granted' => 1351194052,
        ),
        'cn=honors students,ou=groups,dc=hogwarts,dc=edu' => 
        array (
          'date_granted' => 1351194052,
        ),
        'students' => 
        array (
          'date_granted' => 1351194052,
        ),
      ),
    ),
  ),

 'ldap_user_puid_sid' => 
  array (
    'und' => 
    array (
      0 => 
      array (
        'value' => 'activedirectory1',
        'format' => NULL,
        'safe_value' => 'activedirectory1',
      ),
    ),
  ),
   'ldap_user_puid' => 
  array (
    'und' => 
    array (
      0 => 
      array (
        'value' => '101',
        'format' => NULL,
        'safe_value' => '101',
      ),
    ),
  ),
   'ldap_user_puid_property' => 
  array (
    'und' => 
    array (
      0 => 
      array (
        'value' => 'guid',
        'format' => NULL,
        'safe_value' => 'guid',
      ),
    ),
  ),
   'ldap_user_current_dn' => 
  array (
    'und' => 
    array (
      0 => 
      array (
        'value' => 'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
        'format' => NULL,
        'safe_value' => 'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
      ),
    ),
  ),
   'ldap_user_prov_entries' => 
  array (
  ),
   'ldap_user_last_checked' => 
  array (
  ),
   'ldap_authorizations' => 
  array (
  ),




==========================================
Rough Summary of provisioning configuration and controls
==========================================

1. configured triggers (admin/config/people/ldap/user) or configuration of other modules
determine when provisioning happens.

// configurable drupal acct provision triggers
LDAP_USER_DRUPAL_USER_PROV_ON_USER_UPDATE_CREATE
LDAP_USER_DRUPAL_USER_PROV_ON_AUTHENTICATE
LDAP_USER_DRUPAL_USER_PROV_ON_ALLOW_MANUAL_CREATE

// configurable ldap entry provision triggers 
LDAP_USER_LDAP_ENTRY_PROV_ON_USER_UPDATE_CREATE
LDAP_USER_LDAP_ENTRY_PROV_ON_AUTHENTICATE
LDAP_USER_LDAP_ENTRY_DELETE_ON_USER_DELETE


2. hook_user_* functions (and elsewere such as ldap_authentication) will check if appropriate triggers are enabled and initiate calls to ldapUserConf methods:

ldapUserConf::provisionDrupalAccount()
ldapUserConf::synchToDrupalAccount()
ldapUserConf::ldapAssociateDrupalAccount()
ldapUserConf::deleteDrupalAccount()

ldapUserConf::provisionLdapEntry()
ldapUserConf::synchToLdapEntry()
ldapUserConf::deleteProvisionedLdapEntries()

3. to get mappings and determine which attributes are needed "ldap_contexts" and "prov_events" are passed into 
ldap_servers_get_user_ldap_data()
ldapUserConf::drupalUserToLdapEntry()


4.  Should provisioning happen?

------------
4.A.  Server Level: Does an ldap server configuration support provisioning?
ldapUserConf::drupalAcctProvisionServer = <sid> | LDAP_USER_NO_SERVER_SID;  // servers used for to drupal acct provisioning
ldapUserConf::ldapEntryProvisionServer =  <sid> | LDAP_USER_NO_SERVER_SID;  // servers used for provisioning to ldap

This is directly configured at config/people/ldap/user

------------
4.B.  Trigger Level: Does provisioning occur for a given trigger?
ldapUserConf::provisionEnabled($direction, $provision_trigger)
    
This method is based on the configuration of two sets of checkboxes at config/people/ldap/user

ldapUserConf::drupalAcctProvisionTriggers (see "LDAP Entry Provisioning Options"), contains:
  LDAP_USER_DRUPAL_USER_PROV_ON_AUTHENTICATE
  LDAP_USER_DRUPAL_USER_PROV_ON_USER_UPDATE_CREATE
  LDAP_USER_DRUPAL_USER_PROV_ON_ALLOW_MANUAL_CREATE

ldapUserConf::ldapEntryProvisionTriggers (see "Drupal Account Provisioning Options"), contains:
  LDAP_USER_LDAP_ENTRY_PROV_ON_USER_UPDATE_CREATE
  LDAP_USER_LDAP_ENTRY_DELETE_ON_USER_DELETE
  LDAP_USER_LDAP_ENTRY_PROV_ON_AUTHENTICATE

@todo.  A hook to allow other modules to intervene here 

------------
4.C  Field Level: Does provisioning occur for a given field and ldap server for a given "prov_event" and "ldap _context"?

ldapUserConf::isSynched($field, $prov_event, $direction)

This depends on: 
ldapUserConf::synchMapping[$direction][$field]['prov_events']
which is populated by various ldap and possibly other modules.

"ldap_contexts" (any module can provide its own context which is just a string)
  ldap_user_insert_drupal_user
  ldap_user_update_drupal_user
  ldap_authentication_authenticate
  ldap_user_delete_drupal_user
  ldap_user_disable_drupal_user
  all

"prov_events"
  LDAP_USER_EVENT_SYNCH_TO_DRUPAL_USER
  LDAP_USER_EVENT_CREATE_DRUPAL_USER
  LDAP_USER_EVENT_SYNCH_TO_LDAP_ENTRY
  LDAP_USER_EVENT_CREATE_LDAP_ENTRY
  LDAP_USER_EVENT_LDAP_ASSOCIATE_DRUPAL_ACCT



File

ldap_user/README.developers.txt
View source
  1. provisioning = creating or synching ... to drupal or to ldap
  2. ==========================================
  3. LDAP User Data Structures in Drupal User Object
  4. ==========================================
  5. 'data' =>
  6. array (
  7. 'ldap_user' =>
  8. array (
  9. 'init' =>
  10. array (
  11. 'sid' => 'activedirectory1',
  12. 'dn' => 'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
  13. 'mail' => 'hpotter@hogwarts.edu',
  14. ),
  15. ),
  16. 'ldap_authorizations' =>
  17. array (
  18. 'drupal_role' =>
  19. array (
  20. 'cn=gryffindor,ou=groups,dc=hogwarts,dc=edu' =>
  21. array (
  22. 'date_granted' => 1351194052,
  23. ),
  24. 'cn=honors students,ou=groups,dc=hogwarts,dc=edu' =>
  25. array (
  26. 'date_granted' => 1351194052,
  27. ),
  28. 'students' =>
  29. array (
  30. 'date_granted' => 1351194052,
  31. ),
  32. ),
  33. ),
  34. ),
  35. 'ldap_user_puid_sid' =>
  36. array (
  37. 'und' =>
  38. array (
  39. 0 =>
  40. array (
  41. 'value' => 'activedirectory1',
  42. 'format' => NULL,
  43. 'safe_value' => 'activedirectory1',
  44. ),
  45. ),
  46. ),
  47. 'ldap_user_puid' =>
  48. array (
  49. 'und' =>
  50. array (
  51. 0 =>
  52. array (
  53. 'value' => '101',
  54. 'format' => NULL,
  55. 'safe_value' => '101',
  56. ),
  57. ),
  58. ),
  59. 'ldap_user_puid_property' =>
  60. array (
  61. 'und' =>
  62. array (
  63. 0 =>
  64. array (
  65. 'value' => 'guid',
  66. 'format' => NULL,
  67. 'safe_value' => 'guid',
  68. ),
  69. ),
  70. ),
  71. 'ldap_user_current_dn' =>
  72. array (
  73. 'und' =>
  74. array (
  75. 0 =>
  76. array (
  77. 'value' => 'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
  78. 'format' => NULL,
  79. 'safe_value' => 'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
  80. ),
  81. ),
  82. ),
  83. 'ldap_user_prov_entries' =>
  84. array (
  85. ),
  86. 'ldap_user_last_checked' =>
  87. array (
  88. ),
  89. 'ldap_authorizations' =>
  90. array (
  91. ),
  92. ==========================================
  93. Rough Summary of provisioning configuration and controls
  94. ==========================================
  95. 1. configured triggers (admin/config/people/ldap/user) or configuration of other modules
  96. determine when provisioning happens.
  97. // configurable drupal acct provision triggers
  98. LDAP_USER_DRUPAL_USER_PROV_ON_USER_UPDATE_CREATE
  99. LDAP_USER_DRUPAL_USER_PROV_ON_AUTHENTICATE
  100. LDAP_USER_DRUPAL_USER_PROV_ON_ALLOW_MANUAL_CREATE
  101. // configurable ldap entry provision triggers
  102. LDAP_USER_LDAP_ENTRY_PROV_ON_USER_UPDATE_CREATE
  103. LDAP_USER_LDAP_ENTRY_PROV_ON_AUTHENTICATE
  104. LDAP_USER_LDAP_ENTRY_DELETE_ON_USER_DELETE
  105. 2. hook_user_* functions (and elsewere such as ldap_authentication) will check if appropriate triggers are enabled and initiate calls to ldapUserConf methods:
  106. ldapUserConf::provisionDrupalAccount()
  107. ldapUserConf::synchToDrupalAccount()
  108. ldapUserConf::ldapAssociateDrupalAccount()
  109. ldapUserConf::deleteDrupalAccount()
  110. ldapUserConf::provisionLdapEntry()
  111. ldapUserConf::synchToLdapEntry()
  112. ldapUserConf::deleteProvisionedLdapEntries()
  113. 3. to get mappings and determine which attributes are needed "ldap_contexts" and "prov_events" are passed into
  114. ldap_servers_get_user_ldap_data()
  115. ldapUserConf::drupalUserToLdapEntry()
  116. 4. Should provisioning happen?
  117. ------------
  118. 4.A. Server Level: Does an ldap server configuration support provisioning?
  119. ldapUserConf::drupalAcctProvisionServer = | LDAP_USER_NO_SERVER_SID; // servers used for to drupal acct provisioning
  120. ldapUserConf::ldapEntryProvisionServer = | LDAP_USER_NO_SERVER_SID; // servers used for provisioning to ldap
  121. This is directly configured at config/people/ldap/user
  122. ------------
  123. 4.B. Trigger Level: Does provisioning occur for a given trigger?
  124. ldapUserConf::provisionEnabled($direction, $provision_trigger)
  125. This method is based on the configuration of two sets of checkboxes at config/people/ldap/user
  126. ldapUserConf::drupalAcctProvisionTriggers (see "LDAP Entry Provisioning Options"), contains:
  127. LDAP_USER_DRUPAL_USER_PROV_ON_AUTHENTICATE
  128. LDAP_USER_DRUPAL_USER_PROV_ON_USER_UPDATE_CREATE
  129. LDAP_USER_DRUPAL_USER_PROV_ON_ALLOW_MANUAL_CREATE
  130. ldapUserConf::ldapEntryProvisionTriggers (see "Drupal Account Provisioning Options"), contains:
  131. LDAP_USER_LDAP_ENTRY_PROV_ON_USER_UPDATE_CREATE
  132. LDAP_USER_LDAP_ENTRY_DELETE_ON_USER_DELETE
  133. LDAP_USER_LDAP_ENTRY_PROV_ON_AUTHENTICATE
  134. @todo. A hook to allow other modules to intervene here
  135. ------------
  136. 4.C Field Level: Does provisioning occur for a given field and ldap server for a given "prov_event" and "ldap _context"?
  137. ldapUserConf::isSynched($field, $prov_event, $direction)
  138. This depends on:
  139. ldapUserConf::synchMapping[$direction][$field]['prov_events']
  140. which is populated by various ldap and possibly other modules.
  141. "ldap_contexts" (any module can provide its own context which is just a string)
  142. ldap_user_insert_drupal_user
  143. ldap_user_update_drupal_user
  144. ldap_authentication_authenticate
  145. ldap_user_delete_drupal_user
  146. ldap_user_disable_drupal_user
  147. all
  148. "prov_events"
  149. LDAP_USER_EVENT_SYNCH_TO_DRUPAL_USER
  150. LDAP_USER_EVENT_CREATE_DRUPAL_USER
  151. LDAP_USER_EVENT_SYNCH_TO_LDAP_ENTRY
  152. LDAP_USER_EVENT_CREATE_LDAP_ENTRY
  153. LDAP_USER_EVENT_LDAP_ASSOCIATE_DRUPAL_ACCT