KNF:OneLogin configureren als Service Provider/en
Nederlands | English |
This manual provides a guide on how to implement OneLogin as a Service Provider.
Step 1: Installation
- Download the PHP toolkit at https://github.com/onelogin/php-saml.
- Unpack the zip and copy the directory php-saml-master to the right location on your webserver.
- Rename the demo1 directory to the preferred projectname (for example entreefederation).
- Delete the file settings_example.php from the project directory.
- Copy the file settings_example.php from the main directory to the project directory.
- Rename this file to settings.php.
- Rename the file advanced_settings_example.php in the main directory to advanced_settings.php.
Step 2: Generating a certificate
De berichten die met de Entree Federatie applicatie worden uitgewisseld tijdens een authenticatie worden ondertekend door middel van XML-signing. Hiervoor moet een certificaat gegenereerd worden.
- In de hoofd directory (php-saml-master) bevindt zich de sub directory certs.
- Go to the certs directory.
- Execute the following command in order to generate the certificate:
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out sp.crt -keyout sp.key
- Follow the instructions and provide the correct information.
Step 3: Edit settings.php
Voor het realiseren van een koppeling met Entree Federatie zijn een aantal aanpassingen in het bestand settings.php in de project directory nodig.
LET OP! De volgende configuratie aanpassingen zijn toevoegingen of wijzigingen. De php tags zijn niet meegenomen.
De aanpassingen staan beschreven in commentaar in de onderstaande voorbeeld code.
$settings = array (
'strict' => false,
'debug' => false,
// Vul hier de base URL van de applicatie in (voorbeeld: https://example.com)
'baseurl' => '',
// Informatie over de te implementeren Service Provider applicatie
'sp' => array (
// Het entityID is de unieke idenitfier van de applicatie (voorbeeld: https://example.com/projectnaam)
'entityId' => '',
// Informatie over het endpoint waar Entree Federatie de responses naar toestuurt
'assertionConsumerService' => array (
// De URL van het endpoint (voorbeeld: https://example.com/index.php?acs)
'url' => '',
// SAML protocol binding dat gebruikt wordt om de response te versturen
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
),
// Format van de identifier van het onderwerp van authenticatie
// Voor Entree Federatie is het vereist dat dit 'unspecified' is
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
// Informatie van het certificaat dat gegenereerd is in stap 2
'x509cert' => '...'
'privateKey' => '...'
),
// Informatie over de Entree Federatie applicatie
// De informatie staat in de metadata van Entree Federatie
// Metadata staging omgeving: https://hub-s.entree.kennisnet.nl/openaselect/profiles/saml2/
// Metadata productie omgeving: https://hub.entree.kennisnet.nl/openaselect/profiles/saml2/
'idp' => array (
// De unieke identifier van Entree Federatie
'entityId' => '',
// Endpoint van Entree Federatie waar de authenticatie requests naar toegestuurd worden
'singleSignOnService' => array (
// De URL van het endpoint
'url' => '',
// SAML protocol binding dat gebruikt wordt om de requests naar Entree Federatie te versturen
'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
),
// De public key in de metadata van Entree Federatie
'x509cert' => '...'
),
);
Step 4: Edit advanced_settings.php
Aanpassing in het bestand advanced_settings.php in de hoofd directory.
LET OP! De volgende configuratie aanpassingen zijn toevoegingen of wijzigingen. De php tags zijn niet meegenomen.
De aanpassingen staan beschreven in commentaar in de onderstaande voorbeeld code.
// Alle verzonden en ontvangen berichten moeten gesigned zijn
'authnRequestsSigned' => true,
// Contact information
'contactPerson' => array (
'technical' => array (
'givenName' => '',
'emailAddress' => ''
),
'support' => array (
'givenName' => '',
'emailAddress' => ''
),
),
// Organisational information
'organization' => array (
'nl-nl' => array(
'name' => '',
'displayname' => '',
'url' => ''
),
),