Qu'est-ce que c'est et quelles sont ses fonctionnalités ?
La Personal Profile API fournit à votre application un accès en temps réel aux informations de profil des clients d'Orange France, vous permettant ainsi de rechercher et d'extraire des données telles que le nom, l'e-mail, l'adresse, le numéro de téléphone, etc. avec leur permission.
L'API offre un accès sécurisé et contrôlé au profil de l'utilisateur.
Le diagramme ci-dessous illustre comment cette API peut être intégrée à un site Web :

En un mot, la Personal Profile API vous permet :
Rechercher et extraire les informations de profil des clients d'Orange France.
(haut de page)
quelles informations de profil peuvent-elles être recherchées et extraites ?
Les informations de profil peuvent être obtenues en utilisant l'Authentication API.
Les données peuvent être utilisées pour préremplir automatiquement des formulaires, simplifiant ainsi l'expérience utilisateur et les interactions sur votre site Web.
Les informations de profil suivantes peuvent être recherchées et extraites :
nom
prénom
genre (Mlle, Mme, M)
adresse e-mail
adresse postale
code postal
localité
pays
date de naissance
numéro de portable *
numéro de téléphone fixe *
numéro de fax *
type d'utilisateur (Internet, mobile, Internet et mobile, utilisateur inscrit non abonné) *
* L'accès à ces données requiert une autorisation préalable d'Orange. Veuillez nous contacter si vous avez besoin de cette information.
Quelques informations à retenir :
Tous les attributs n'ayant pas nécessairement été remplis par les utilisateurs, Orange ne garantit pas la disponibilité de tous les attributs.
Un utilisateur devra toujours donner son consentement pour la transmission de ses données personnelles par Orange (via la fonctionnalité respect de la vie privée).
Notez que si vous utilisez déjà l'Authentication API à une fin différente (par ex. pour rechercher et extraire un jeton d'utilisateur pour appeler d'autres Personal APIs et/ou déléguer l'authentification de l'utilisateur Orange à la plateforme Orange), vous devez simplement ajouter un paramètre supplémentaire dans les requêtes d'authentification que vous envoyez à Orange en utilisant l'Authentication API.
(haut de page)
extraire des informations de profil
Pour rechercher et extraire des informations de profil, vous devez procéder comme suit :
envoyer une requête d'authentification à Orange
extraire l'identifiant de l'utilisateur (identifiant du nom) contenu dans la réponse d'authentification
envoyer une requête d'authentification à Orange
La requête d'authentification est envoyée au fournisseur d'identité d'Orange via le navigateur, sur la base d'une redirection HTTP 302.
Veuillez noter que la requête SAML doit être compressée au format ZIP à l'aide de DEFLATE puis envoyée comme paramètre d'URL encodé en Base64.
Dans la requête SAML, vous devez ajouter un paramètre doté d'une valeur indiquant les données que vous souhaitez rechercher et extraire (il s'agit d'un masque binaire sur une liste de données prédéfinie). Dans l'exemple ci-dessous, la valeur « AttributeConsumingServiceIndex=18 » renverra le nom d'affichage et l'adresse e-mail de l'utilisateur.
Ci-dessous, un exemple de requête d'authentification SAML :
|
HTTP redirection from user's browser to Orange:
[IDP_SingleSignOnURL]?SAMLRequest=jZAxT8MwFIR3foXlPcROo9i1kkgRXSrBQhEDC3LNa2qpsVO %2FZ1T%2BPRYsjKx3p%2B9O10%2BZzuEZrhmQ2G25BBx4TsFEix5Ns AugIWcO09Ojae6FWVOk6OKFs%2F1u4O8b3Wmw7WkDWyWV6JrGu Ua59tQdO6u2wNlElPwxEzzEgHnxYT5A%2BvQO9uEDbgOXmrNXSOhjGHhpK GDEXFwkG6hIQuhKNJXQL7IzUplWvnE23vU%2FsfSfzRYREpUCPp6JVlPXyxeu1 TzHvv6lFFz994nxGw%3D%3D">http://idp/sso?SAMLRequest=jZAxT8Mw FIR3foXlPcROo9i1kkgRXSrBQhEDC3LNa2qpsVO%2FZ1T%2BPRYsjKx3p% 2B9O10%2BZzuEZrhmQ2G25BBx4TsFEix5NsAugIWcO09Ojae6FWVOk6OKFs% 2F1u4O8b3Wmw7WkDWyWV6JrGuUa59tQdO6u2wNlElPwxEzzEgHnxYT5A% 2BvQO9uEDbgOXmrNXSOhjGHhpKGDEXFwkG6hIQuhKNJXQL7IzUplWvnE23vU% 2FsfSfzRYREpUCPp6JVlPXyxeu1TzHvv6lFFz994nxGw%3D%3D
Decoded SAML request:
<AuthnRequest xmlns="urn:oasis:names:tc:SAML:2.0:protocol" ID="_3868ea4f3e97170622cc27c4f6b6a79e" AttributeConsumingServiceIndex="18" Version="2.0" IssueInstant="2008-02-08T16:17:41Z"> <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">[SERVICE_ID]</Issuer> </AuthnRequest>
|
Ci-dessous, un exemple de code PHP utilisé pour générer et envoyer la requête:
|
<?php function randomhex($length) { $key = ""; for ( $i=0; $i < $length; $i++ ) { $key .= dechex( rand(0,15) ); } return $key; }
## Metadata require_once("idpMetadata.php"); $issuer = "[SERVICE_ID]"; $idpTargetUrl = $idpMetadata['[IDP_ID]']['SingleSignOnUrl'];
## Dynamic data of the SAML request $id = randomhex(32); $issueInstant = gmdate("Y-m-d\TH:i:s\Z"); $attributeConsumingServiceIndex = 18; #this is an example
## <AuthnRequest> $authnRequest = "<AuthnRequest xmlns=\"urn:oasis:names:tc:SAML:2.0:protocol\" " . "ID=\"_" . $id . "\" " . "Version=\"2.0\" " . "IssueInstant=\"" . $issueInstant . "\" " . AttributeConsumingServiceIndex=\"" . $attributeConsumingServiceIndex . "\">\n" . "<Issuer xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\">" . $issuer . "</Issuer>\n" . "<NameIDPolicy " . "AllowCreate=\"true\"/>" . "</AuthnRequest>";
## HTTP-Redirect Binding $encodedAuthnRequest = urlencode( base64_encode( gzdeflate( $authnRequest ) )); $redirectUrl = $idpTargetUrl . "?SAMLRequest=" . $encodedAuthnRequest;
## Redirect Header("Location: ".$redirectUrl); ?>
"idpMetadata.php" configuration file (used in previous code example): <?php # The partner SP must store the metadata to communicate with Orange identity provider. $idpMetadata = array( "[IDP_ID]" => array( "SingleSignOnUrl" =>"[IDP_SingleSignOnURL]", "certificate" =>"[IDP_Certificate]" ) ); ?>
|
Extraire les données de l'utilisateur contenues dans la réponse d'authentification
Pour rechercher et extraire les données de l'utilisateur contenues dans la réponse SAML, vous devez simplement :
décoder la réponse SAML en Base64 reçue dans la requête HTTP POST
analyser la réponse SAML (document XML) pour trouver les attributs.
vous rechercherez et extrairez un attribut en utilisant l'expression XPATH suivante :
|
/samlp:Response/saml:Assertion/saml:AttributeStatement/saml:Attribute [@Name='Attribute Name']/saml:AttributeValue (using the following namespaces : xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" and xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol")
|
Ci-dessous, un exemple de réponse d'authentification SAML :
|
Decoded SAML response:
<Response xmlns="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" ID="_nS4RnQwSEXneSTLMVlq" Version="2.0" IssueInstant="2008-02-08T16:18:22Z" Destination="[SERVICE_RETURN_URL]" InResponseTo="_3868ea4f3e97170622cc27c4f6b6a79e"> <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://idp</Issuer> <Status> <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" /> </Status> <Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_B2TAbq1C3KnpSeSO4Yf" Version="2.0" IssueInstant="2008-02-08T16:18:22Z"> <Issuer>[IDP_ID]</Issuer> <Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameidformat:transient"> 5kQkvXaqjONx4d70jC5L </NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData Recipient="[SERVICE_RETURN_URL]" NotOnOrAfter="2008-02-08T16:33:22Z" InResponseTo="_3868ea4f3e97170622cc27c4f6b6a79e" /> </SubjectConfirmation> </Subject> <Conditions> <AudienceRestriction> <Audience>[SERVICE_ID]</Audience> </AudienceRestriction> </Conditions> <AuthnStatement AuthnInstant="2008-02-08T16:18:22Z"> <AuthnContext> <AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef> </AuthnContext> </AuthnStatement> <AttributeStatement> <Attribute Name="displayname" NameFormat="urn:oasis:names:tc:SAML:2.0:profiles:attribute:basic"> <AttributeValue xsi:type="xs:string">Claude Bertau</AttributeValue> </Attribute> <Attribute Name="emailaddress" NameFormat="urn:oasis:names:tc:SAML:2.0:profiles:attribute:basic"> <AttributeValue xsi:type="xs:string">claude.bertau@orange.fr</AttributeValue> </Attribute> </AttributeStatement> </Assertion> </Response>
|
Ci-dessous, un exemple de code PHP pour traiter la réponse :
|
<?php
# Decode the Response $encodedAuthnResponse = $_POST['SAMLResponse']; $authnResponse = @base64_decode($encodedAuthnResponse);
# Get some useful data from XML $xml = simplexml_load_string($authnResponse);
# Profile attributes $user_info = array(); if ($xml->{'Assertion'}->{'AttributeStatement'} && $xml->{'Assertion'}->{'AttributeStatement'}->{'Attribute'}) { foreach ($xml->{'Assertion'}->{'AttributeStatement'}->{'Attribute'} as $attribute) { $key = $attribute['Name']; $user_info["$key"] = (string)$attribute->{'AttributeValue'}; } }
?>
<HTML> <BODY> Attributes : <?php var_dump($user_info) ?> </BODY> </HTML>
|
Mise en correspondance des noms d'attributs et des données de profil d'utilisateur :
| données de profil d'utilisateur correspondantes |
nom d'attribut |
| genre |
gender |
| nom d'affichage |
displayname |
| prénom |
givenname |
| nom |
surname |
| adresse e-mail |
emailaddress |
| adresse |
streetaddress |
| code postal |
postalcode |
| localité |
locality |
| pays |
country |
| date de naissance |
dateofbirth |
| numéro de téléphone portable |
mobilephone |
| numéro de téléphone fixe |
homephone |
| numéro de fax |
facsimile |
type d'utilisateur (Internet, mobile, Internetetmobile, utilisateur inscrit non abonné) |
usertype |
(haut de page)