XML-RPC

From Hobbynet Admin Wiki
Revision as of 16:39, 14 February 2012 by Hans (talk | contribs) (XML-RPC interface beschrijving)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

XML-RPC interface

De LDAP server kan direct gemuteerd worden via een LDAP koppeling. Zie de standaard LDAP pagina voor de uitleg welke poorten daarvoor gebruikt kunnen worden.

Daarnaast is er de wens ontstaan om via een standaard protocol met de LDAP omgeving te kunnen communiceren. Er is hiertoe een XML-RPC koppeling ontwikkeld. XML-RPC is een standaard interface, waarmee het mogelijk is om vanuit diverse omgevingen op een gestandaardiseerde manier te communiceren.

Globale functie omschrijving

  • Controleer of een gebruiker bestaat
  • Wijzig het wachtwoord ('userPassword') en/of de gebruikersnaam ('hccLogin')
  • Maak een nieuwe gebruiker
  • Gooi een gebruiker weg
  • Muteer een gebruiker ('hccIG', 'hccRegio', 'hccRol')

Authenticatie

Alle aanroepen gebeuren op basis van authenticatie vanuit de aanroeper. Dit valt uiteen in de volgende categorieën:

  • gebruikersnaam ('hccLogin') en wachtwoord ('userPassword')
  • hcc lidnummer ('hccLidnummer') en hcc code ('hccCode')
  • beheerders-DN ('beheerLogin') en beheerders wachtwoord ('beheerPassword')

Resultaten

Alle aanroepen geven de volgende elementen terug:

  • naam van de uitgevoerde procedure ('Action')
  • resultaat van de uitgevoerde procedure ('Status')
  • Een tekstuele vertaling van het resultaat dan wel de foutmelding ('Message')

Daarnaast geven specifieke aanroepen extra resultaten terug

Technische omschrijving

2012.02.14 HaVe
XML-RPC Hobbynet versie 6.

// XML-RPC beschrijving van acties in hcc.nl LDAP database //

// 1.1 controleer of een gebruiker bestaat - optie 1
// (authenticatie op basis van hccLidnr en hccCode)
$request = xmlrpc_encode_request('ldap',
                array('GebruikerBestaatControle',
                      array('hccLidnr',		$hccLidnr),
                      array('hccCode',		$hccCode)));

// 1.2 controleer of een gebruiker bestaat - optie 2
// (authenticatie op basis van hccLogin en userPassword)
$request = xmlrpc_encode_request('ldap',
                array('GebruikerBestaatControle',
                      array('hccLogin',		$hccLogin),
                      array('userPassword',	$userPassword)));

// 1.3 controleer of een gebruiker bestaat - optie 3
// (t.b.v. PC30 portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('ldap',
                array('GebruikerBestaatControle',
                      array('beheerLogin',	$beheerLogin),
                      array('beheerPassword',	$beheerPassword),
                     [array('hccLidnr',		$hccLidnr),]
                     [array('hccLogin',		$hccLogin)]));
Output positief:
   $reply = array('HCCldap',
                array('Action',         'GebruikerBestaatControle'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruikersgegevens opgevraagd'),
                array('hccLidnr',       $hccLidnr),
                array('hccLogin',       $hccLogin),
		array('cn',		$cn),
		array('sn',		$sn);
		array('hccRegio',	$hccRegio);
		array('hccIG',		$hccIG);
		array('hccRol',		$hccRol);
Output negatief
  $reply = array('HCCldap',
                array('Action',         'GebruikerBestaatControle'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'GebruikerBestaatControle'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// 2.1 wijzig wachtwoord - optie 1
// op basis van hccLidnummer en hccCode (t.b.v. wachtwoord-vergeten procedure)
// (authenticatie op basis van hccLidnr en hccCode)
// * als <nieuw_userPassword> ontrbeekt (of leeg is), dan wordt de hccCode als nieuw wachtwoord ingezet
$request = xmlrpc_encode_request('ldap',
                array('WijzigGebruikersGegevens',
                      array('hccLidnr',			$hccLidnr),
                      array('hccCode',			$hccCode),
                     [array('nieuw_userPassword',	$nieuw_userPassword)]));

// 2.2 wijzig wachtwoord - optie 2
// (t.b.v. profiel-pagina)
// (authenticatie op basis van hccLogin en userPassword)
// * tenminste 1 van beide optionele velden moet gevuld zijn
$request = xmlrpc_encode_request('ldap',
                array('WijzigGebruikersGegevens',
                      array('hccLogin',			$hccLogin),
                      array('userPassword',		$userPassword),
                     [array('nieuw_hccLogin',		$nieuw_hccLogin),]
                     [array('nieuw_userPassword',	$nieuw_userPassword)]));

// 2.3 wijzig wachtwoord - optie 3
// (t.b.v. PC30 portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('ldap',
                array('WijzigGebruikersGegevens',
                      array('beheerLogin',		$beheerLogin),
                      array('beheerPassword',		$beheerPassword),
                     [array('hccLidnr',			$hccLidnr),]
                     [array('hccLogin',			$hccLogin),]
                      array('nieuw_userPassword',	$nieuw_userPassword)));
Output positief:
  $reply = array('HCCldap',
                array('Action',         'WijzigGebruikersGegevens'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruikersgegevens gewijzigd'),
                array('cn',		$cn),
                array('sn',		$sn));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'WijzigGebruikersGegevens'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'WijzigGebruikersGegevens'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// ** t.b.v. Cronjob **
// 3.1 Creer een nieuwe gebruiker. Per lidnummer is er 1 account. Als er al een
// account voor dit lidnummer bestaat wordt het bestaande account hernoemd.
// * nieuw_hccLogin mag ontbreken (of leeg gelaten worden).
//   Dan wordt de inhoud van nieuw_hccLidnr ook in dat veld ingevuld.
// * nieuw_userPassword mag ontbreken (of leeg gelaten worden).
//   Dan wordt de inhoud van nieuw_hccCode ook in dat veld ingevuld.
// * 'cn' en 'sn' worden aangemaakt aan de hand van nieuw_Voorletters, nieuw_Tussenvoegsel en nieuw_Achternaam.
//   Voorbeeld:
//    nieuw_Voorletters   ='T.'
//    nieuw_Tussenvoegsel = 'van'
//    nieuw_Achternaam    = 'Test'
//    => cn='T. van Test', sn='Test,T van'
// * nieuw_hccIG  mag ontbreken (of leeg gelaten worden).
// * nieuw_hccRol mag ontbreken (of leeg gelaten worden).
$request = xmlrpc_encode_request('ldap',
                array('NieuweGebruiker',
                      array('beheerLogin',              $beheerLogin),
                      array('beheerPassword',           $beheerPassword),
                      array('nieuw_hccLidnr',           $nieuw_hccLidnr),
                     [array('nieuw_hccLogin',           $nieuw_hccLogin),]
                     [array('nieuw_userPassword',       $nieuw_userPassword),]
                      array('nieuw_hccCode',            $nieuw_hccCode),
                     [array('nieuw_Voorletters',        $nieuw_Voorletters),]
                     [array('nieuw_Tussenvoegsel',      $nieuw_Tussenvoegsel),]
                      array('nieuw_Achternaam',         $nieuw_Achternaam),
                      array('nieuw_hccRegio',           $nieuw_hccRegio),
                     [array('nieuw_hccIG',              $nieuw_hccIG),]    // komma-gescheiden lijst
                     [array('nieuw_hccRol',             $nieuw_hccRol)])); // komma-gescheiden lijst

Output positief:
   $reply = array('HCCldap',
		array('Action',		'NieuweGebruiker'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruiker aangemaakt'));
Output negatief:
  $reply = array('HCCldap',
		array('Action',		'NieuweGebruiker'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
		array('Action',		'NieuweGebruiker'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// ** t.b.v. Cronjob **
// 4.1 Gooi een gebruiker weg.
// * Als verwijder_hccLidnr gevuld is, dan wordt verwijder_hccLidnr gebruikt om het juiste record te zoeken
//   Als verwijder_hccLidnr leeg   is, dan wordt verwijder_hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('ldap',
                array('GooiGebruikerWeg',
                      array('beheerLogin',		$beheerLogin),
                      array('beheerPassword',		$beheerPassword),
                     [array('verwijder_hccLidnr',	$verwijder_hccLidnr),]
                     [array('verwijder_hccLogin',	$verwijder_hccLogin)]));
Output positief:
   $reply = array('HCCldap',
                array('Action',         'GooiGebruikerWeg'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruiker verwijderd'));
Output negatief:
  $reply = array('HCCldap',
		array('Action',		'GooiGebruikerWeg'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'GooiGebruikerWeg'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// ** t.b.v. Cronjob **
// 5.1 Wijzig hccIG
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
// * nieuw_hccIG is een komma-gescheiden lijst. 
//   Als deze lijst leeg is (of ontbreekt), dan worden alle bestaande hccIG records van dit lid weggegooid.
$request = xmlrpc_encode_request('ldap',
                array('WijzigHccIG',
                      array('beheerLogin',      $beheerLogin),
                      array('beheerPassword',   $beheerPassword),
                     [array('hccLidnr',         $hccLidnr),]
                     [array('hccLogin',         $hccLogin),]
                     [array('nieuw_hccIG',      $nieuw_hccIG)]));    // komma-gescheiden lijst
Output positief:
   $reply = array('HCCldap',
                array('Action',         'WijzigHccIG'),
                array('Status',         'TRUE'),
                array('Message',        'hccIG gewijzigd'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'WijzigHccIG'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'WijzigHccIG'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// ** t.b.v. Cronjob **
// 6.1 Wijzig hccRegio
// Pas bij een verhuizing de hccRegio aan
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('ldap',
                array('WijzigHccRegio',
                      array('beheerLogin',      $beheerLogin),
                      array('beheerPassword',   $beheerPassword),
                     [array('hccLidnr',         $hccLidnr),]
                     [array('hccLogin',         $hccLogin),]
                      array('nieuw_hccRegio',   $nieuw_hccRegio)));
Output positief:
   $reply = array('HCCldap',
                array('Action',         'WijzigHccRegio'),
                array('Status',         'TRUE'),
                array('Message',        'hccRegio gewijzigd'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'WijzigHccRegio'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'WijzigHccRegio'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// ** t.b.v. Cronjob **
// 7.1 Wijzig hccRol
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
// * nieuw_hccRol is een komma-gescheiden lijst.
//   Als deze lijst leeg is (of ontbreekt), dan worden alle bestaande hccRol records van dit lid weggegooid.
$request = xmlrpc_encode_request('ldap',
                array('WijzigHccRol',
                      array('beheerLogin',      $beheerLogin),
                      array('beheerPassword',   $beheerPassword),
                     [array('hccLidnr',         $hccLidnr),]
                     [array('hccLogin',         $hccLogin),]
                     [array('nieuw_hccRol',     $nieuw_hccRol)]));
Output positief:
   $reply = array('HCCldap',
                array('Action',         'WijzigHccRol'),
                array('Status',         'TRUE'),
                array('Message',        'hccRol gewijzigd'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'WijzigHccRol'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'WijzigHccRol'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));


// onbekende aanroep
$request = xmlrpc_encode_request('ldap',
                array('OnbekendeAanroep',
                      array('parameter',	$iets)));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'OnbekendeAanroep'),
                array('Status',         'FALSE'),
                array('Message',        'Opdracht onbekend'));

------------------------
2012.02.08 Wijzigingen versie 5:
 - 4.1 verwijder_hcc_Lidnummer i.p.v. hcc_Lidnummer
 - 4.1 optionele extra parameter verwijder_hccLogin
 - Optionele parameters aangegeven
 - Vanwege de duidelijkheid de beheerLogin en beheerPassword velden
   bovenin de betreffende aanroepen gezet
   (De volgorde van de parameters is niet relevant, dus dit is geen
    interface-aanpassing)
2012.02.14 Wijzigingen versie 6:
 - 2.1/2.2/2.3 geef ook cn en sn terug na aanpassen van het wachtwoord