<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>S-money API</title>
	<link>https://api.s-money.fr/</link>
	<description></description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>

	<image>
		<title>S-money API</title>
		<url>https://api.s-money.fr/local/cache-vignettes/L75xH75/siteon0-e5814.png?1590579615</url>
		<link>https://api.s-money.fr/</link>
		<height>75</height>
		<width>75</width>
	</image>



<item xml:lang="en">
		<title>Third-party application registration</title>
		<link>https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/third-party-application</link>
		<guid isPermaLink="true">https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/third-party-application</guid>
		<dc:date>2016-07-06T10:29:26Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Hadassa</dc:creator>



		<description>
&lt;p&gt;In order to retrieve the authentication elements of the third-party application, it is necessary to register the third party application within the Si S-money. &lt;br class='autobr' /&gt;
This registration by the S-money back office follows the establishment of the commercial relationship between the intermediary owner of the third-party application and S-money. A third-party application is associated to an intermediary role user. &lt;br class='autobr' /&gt;
During the registration of the application, the following information must be (...)&lt;/p&gt;


-
&lt;a href="https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/" rel="directory"&gt;V1&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;In order to retrieve the authentication elements of the third-party application, it is necessary to register the third party application within the Si S-money.&lt;/p&gt;
&lt;p&gt;This registration by the S-money back office follows the establishment of the commercial relationship between the intermediary owner of the third-party application and S-money. A third-party application is associated to an intermediary role user.&lt;/p&gt;
&lt;p&gt;During the registration of the application, the following information must be provided:
&lt;br /&gt;&lt;img src='https://api.s-money.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1590579615' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Functions usable by the third-party application
&lt;br /&gt;&lt;img src='https://api.s-money.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1590579615' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; The return url for requests sent to S-money API&lt;/p&gt;
&lt;p&gt;In return, S-money provides a unique identifier of the third-party application and specific to the third-party application.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;General kinematics&lt;/h3&gt;
&lt;p&gt;The S-money Id protocol follows such stages:&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; The third-party application sends an S-money request&lt;/li&gt;&lt;li&gt; S-money authenticates the user and obtains authorisation.&lt;/li&gt;&lt;li&gt; S-money replies to the third-party application with an identification token (ID token) and an access token (Access token)&lt;/li&gt;&lt;li&gt; The third-party application can ask for the user information via access to the UserInfo resource&lt;/li&gt;&lt;li&gt; S-money returns the UserInfo resource with claims associated to the user&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&#034;spip&#034;&gt;Authorisation request form&lt;/h3&gt;
&lt;p&gt;When the third-party application wants to authenticate an S-money user or determine whether an S-money user is already authenticated, it prepares an authentication request to send to the S-money server.&lt;/p&gt;
&lt;p&gt;Once such authentication request is prepared, the third-party application sends it to the S-money server using the HTTPS protocol.&lt;/p&gt;
&lt;p&gt;Generally, this sending is made via http 302 Redirect response which provokes sending through the browser of the authentication request to the S-money server:&lt;/p&gt;
&lt;p&gt;HTTP/1.1 302 Found&lt;br class='autobr' /&gt;
Location: https://rest.s-moneyfr/oauth/authorize?&lt;br class='autobr' /&gt; response_type=code&lt;br class='autobr' /&gt; &amp;client_id=&#8230;&lt;br class='autobr' /&gt; &amp;redirect_uri=&#8230;&lt;br class='autobr' /&gt; &amp;scope=openid &#8230;&lt;br class='autobr' /&gt; &amp;state=&#8230;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Authentication request &lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://rest.s-money.fr/oauth/Home/authorize&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr/oauth/Home/authorize&lt;/a&gt;?&lt;br class='autobr' /&gt;
client_id=YOUR_APP_ID&lt;br class='autobr' /&gt;
&amp;redirect_uri=RETURN_URL&lt;br class='autobr' /&gt;
&amp;response_type=code&lt;br class='autobr' /&gt;
&amp;scope=openid SCOPE&lt;br class='autobr' /&gt;
&amp;state=STATE&lt;br class='autobr' /&gt;
&amp;role=ROLE&lt;/p&gt;
&lt;p&gt;Parameters :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;client_id&lt;/strong&gt; : (mandatory) Third-party application identifier.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;redirect_uri&lt;/strong&gt; : (mandatory) Uri of redirection&lt;/li&gt;&lt;li&gt; &lt;strong&gt;response_type&lt;/strong&gt; :(mandatory) must be a &#034;code&#034;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;scope &lt;/strong&gt;: (mandatory) requested rights. It must contain at least the openid value.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;state &lt;/strong&gt;: (mandatory) used by the client in order to maintain the status of his/her application between the request and the callback.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;Response&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;If the user is correctly authenticated by S-money, he/she will redirected to:&lt;br class='autobr' /&gt;
RETURN_URL ?code=AUTH_CODE&amp;state=STATE&lt;/p&gt;
&lt;p&gt;Parameters :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;code&lt;/strong&gt; : authorisation code&lt;/li&gt;&lt;li&gt; &lt;strong&gt;state &lt;/strong&gt;: return the exact value send to the form.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;See the below example of the user redirection after authentication by the S-money server:&lt;/p&gt;
&lt;p&gt;HTTP/1.1 302 Found&lt;br class='autobr' /&gt;
Location: &lt;a href=&#034;https://client.example.org/cb&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://client.example.org/cb&lt;/a&gt;?&lt;br class='autobr' /&gt;
code=&#8230;.&lt;br class='autobr' /&gt;
&amp;state=&#8230;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Third-party application authentication&lt;/h3&gt;
&lt;p&gt;For each request at the token termination point, the HTTP Authorization header needs to be changed into the Basic mode in the request:&lt;/p&gt;
&lt;p&gt;Authorization: Basic CHAINE_ENCODEE&lt;/p&gt;
&lt;p&gt;The sequence to pass constitutes a combination of a client application identifier (example : &#034;appidentifier&#034;) and his/her secret, combined as follows: &#034;appidentifier:secret&#034;, later encoded in Base64.&lt;/p&gt;
&lt;p&gt;Exchange of the authorisation code (auth code) against access tokens and identification&lt;/p&gt;
&lt;p&gt;To obtain the access tokens and identification makes a request presenting an authorisation code received earlier.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Request&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;POST /oauth/token HTTP/1.1&lt;br class='autobr' /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br class='autobr' /&gt;
Content-Length: 81&lt;br class='autobr' /&gt;
Authorization: Basic CHAINE_ENCODEE&lt;br class='autobr' /&gt;
grant_type=authorization_code&amp;code=AUTH_CODE&amp;redirect_uri=RETURN_URL&lt;/p&gt;
&lt;p&gt;Parameters :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;grant_type&lt;/strong&gt; : Should be to &#034;authorization_code&#034;.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;code&lt;/strong&gt; :the authorisation code retrieved beforehand.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;Response&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;{&lt;br /&gt;
&#034;access_token&#034;:&#034;ACCESS_TOKEN&#034;,&lt;br /&gt;
&#034;token_type&#034;:&#034;Bearer&#034;,&lt;br /&gt;
&#034;expires_in&#034;:1799,&lt;br /&gt;
&#034;refresh_token&#034;:&#034;REFRESH_TOKEN&#034;,&lt;br /&gt;
&#8220;Id_token&#8221;:&#8221;&#8230;&#8230;&#8221;&lt;br /&gt;
}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Parameters :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;access_token&lt;/strong&gt; : Le jeton d'acc&#232;s qui permet de faire des appels &#224; l'API S-money.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;token_type&lt;/strong&gt; : bearer&lt;/li&gt;&lt;li&gt; &lt;strong&gt;expires_in&lt;/strong&gt; : token validation time (in seconds)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;refresh_token&lt;/strong&gt; : allows to exchange a valid access token against an expired one. An actualisation token is valid only once.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Id_token&lt;/strong&gt; : a security token which contains claims concerning the authentication of the user by S-money. The id-token is represented as a JSON Web Token.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;Errors format&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;HTTP/1.1 400 Bad Request&lt;br class='autobr' /&gt;
Content-Type: application/json&lt;br class='autobr' /&gt;
&lt;i&gt;&lt;br class='autobr' /&gt; &#034;error&#034;:&#034;CODE_ERREUR&#034;,&lt;br class='autobr' /&gt; &#034;error_description&#034;:&#034;DESCRIPTION&#034;&lt;br class='autobr' /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Possible error codes::&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_request&#034;&lt;/strong&gt; : The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_client&#034;&lt;/strong&gt; : Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;unauthorized_client&#034;&lt;/strong&gt; : The client is not authorized to request an authorization code or access token using this method.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;access_denied&#034;&lt;/strong&gt; : The resource owner or authorization server denied the request.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_grant&#034;&lt;/strong&gt; : The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;unsupported_grant_type&#034;&lt;/strong&gt; : The authorization grant type is not supported by the authorization server.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;unsupported_response_type&#034;&lt;/strong&gt; : The authorization server does not support obtaining an authorization code using this method.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_scope&#034;&lt;/strong&gt; : The requested scope is invalid, unknown, or malformed.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;server_error&#034;&lt;/strong&gt; : The authorization server encountered an unexpected condition that prevented it from fulfilling the request.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;temporarily_unavailable&#034;&lt;/strong&gt; : The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&#034;spip&#034;&gt;The identification token format&lt;/h3&gt;
&lt;p&gt;The identification token contains the following claims:&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;iss&lt;/strong&gt; : contains the value &lt;a href=&#034;https://rest.s-money.fr&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;sub&lt;/strong&gt; : S-money internal identifier of the user&lt;/li&gt;&lt;li&gt; &lt;strong&gt;aud&lt;/strong&gt; : third-party application identifier&lt;/li&gt;&lt;li&gt; &lt;strong&gt;exp&lt;/strong&gt; : expiry date/hour of a token with a number of seconds from 1970-01-01T0:0:0Z in UTC&lt;/li&gt;&lt;li&gt; &lt;strong&gt;iat&lt;/strong&gt; : date/hour at which a token was issued represented in a number of seconds from 1970-01-01T0:0:0Z in UTC&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The token is presented in the form of a JWT token, according to the following format:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base64URL(Ent&#234;te).Base64URL(corps).Base64URL(signature)&lt;br class='autobr' /&gt;
&lt;/strong&gt;Avec :&lt;br class='autobr' /&gt;
&lt;strong&gt; Header:&lt;br class='autobr' /&gt;
&lt;/strong&gt;&lt;i&gt;&#034;type&#034;:&#034;JWT&#034;,&lt;br class='autobr' /&gt; &#034;alg&#034;:&#034;HS256&#034;&lt;/i&gt;&lt;br class='autobr' /&gt;
&lt;strong&gt;Body:&lt;br class='autobr' /&gt;
&lt;/strong&gt;&lt;i&gt;&lt;br class='autobr' /&gt; &#034;iss&#034;: &#034;&lt;a href=&#034;https://rest.s-money.fr&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr&lt;/a&gt;&#034;,&lt;br class='autobr' /&gt; &#034;sub&#034;: &#034;&#8230;&#034;,&lt;br class='autobr' /&gt; &#034;aud&#034;: &#034;&#8230;&#034;,&lt;br class='autobr' /&gt; &#034;exp&#034;: &#8230;,&lt;br class='autobr' /&gt; &#034;iat&#034;: &#8230;&lt;br class='autobr' /&gt; &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Signature :&lt;/strong&gt;&lt;br class='autobr' /&gt;
HMAC SHA-256(Base64URL(header).Base64URL(body),secret), where secret is the secret key of the third-party application. .&lt;br class='autobr' /&gt;
The BAS64URL encoding is a BASE64URL encoding without padding, which means without adding the &#8216;=' character.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Token identification validation&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;JWT token decoding&lt;/i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Upon receipt of the JWT token, the third-party application follows the following stages to decode the JWT token:&lt;/p&gt;
&lt;p&gt;Separate the character sequence according to the &#8216;.' character in order to isolate the 3 segments:&lt;br class='autobr' /&gt;
Base64URL(header)&lt;br class='autobr' /&gt;
Base64URL(body)&lt;br class='autobr' /&gt;
Base64URL(signature)&lt;br class='autobr' /&gt;
Decode the Base64URL (header) and Base64URL(body) segments in order to obtain:&lt;/p&gt;
&lt;p&gt;Header&lt;br class='autobr' /&gt;
Body&lt;br class='autobr' /&gt;
&lt;i&gt;JWT token validation&lt;/i&gt;&lt;br class='autobr' /&gt;
Once the JWT token is decoded,&lt;br class='autobr' /&gt;
Check if the header is JSON valid&lt;br class='autobr' /&gt;
Check if the body is JSON valid&lt;br class='autobr' /&gt;
Check if the alg parameter of the header is &#8216;HS256'&lt;br class='autobr' /&gt;
Calculate the signature as described in the 2.5 section&lt;br class='autobr' /&gt;
If the base64URL decoding of the signature calculated equals the Base64URL segment (signature) of the JWT token, then the JWT token is valid.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ID token validation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once the JWT token is validated, it is possible to validate the id_token included in the body. In order to do it, the following stages need to be completed:&lt;br class='autobr' /&gt;
The iss parameter value needs to equal to &#171; rest.s-money.fr &#187;&lt;br class='autobr' /&gt;
The aud parameter value needs to equal to the identifier (&#8216;client_id') of the third-party application&lt;br class='autobr' /&gt;
The current hour needs to be before the exp parameter value &lt;br class='autobr' /&gt;
If the iat parameter value is too old in relation to the current hour, then the token needs to be rejected.&lt;br class='autobr' /&gt;
Once the id_token is validated by the third-party application, then the user can can be considered as authenticated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UserInfo resource&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The UserInfo resource allows to obtain the information associated to the authenticated user.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;sub &lt;/strong&gt; parameter is always returned in the response of the UserInfo resource. To prevent attacks based on token substitution, the third-party application needs to verify that the sub parameter value equals to the value that was presented in the &lt;strong&gt;sub &lt;/strong&gt; parameter of the id_token. If they do not equal the Userinfo resource should not be used (and an alert disposition needs to be established allowing to investigate the potential attack).&lt;/p&gt;
&lt;p&gt;The information included in the response of the UserInfo resource depends on the scope parameter value of the authorisation request which allows to obtain access and identification tokens. The table below presents the possible values for the scope parameter.&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;openid&lt;/td&gt;
&lt;td&gt;required&lt;/td&gt;
&lt;td&gt;Informs the S-money server that the third-party application makes an S-money ID request&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;profile&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Allows to obtain the name (name), the family name (family_name), the date of birth (birth_date) of the user&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;email&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Allows to obtain the user's e-mail (email) and/or user's verified e-mail (email_verified)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;address&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Allows to obtain the user's address with the following information: street_address, locality, postal_code, country&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;phone&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Allows to obtain the mobile number (phone) and/or the verified mobile phone of the user (phone_verified)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;offline_access&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Allows to request a refresh token that can be used to obtain the resource UserInfo, even if the user is not connected&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Below a scope example:&lt;/p&gt;
&lt;p&gt;scope=openid profile email phone&lt;/p&gt;
&lt;p&gt;Obtaining the UserInfo resource through the third-party application involves the following steps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Request:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GET /api/[domaine]/UserInfo HTTP/1.1 &lt;br class='autobr' /&gt;
Accept: application/vnd.s-money.v1+json&lt;br class='autobr' /&gt;
Authorization: Bearer ACCESS_TOKEN&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Response :&lt;/strong&gt;&lt;br class='autobr' /&gt;
HTTP/1.1 200 OK&lt;br class='autobr' /&gt;
Content-Type: application/vnd.s-money.v1+json&lt;br class='autobr' /&gt;
&lt;i&gt;&lt;br class='autobr' /&gt;
sub: &#8220;&#8230;&#8221;,&lt;br class='autobr' /&gt;
family_name:&#8221;&#8230;&#8221;,&lt;br class='autobr' /&gt;
name:&#8221;&#8230;&#8221;,&lt;br class='autobr' /&gt;
birthdate:&#8221;&#8230;.&#8221;,&lt;br class='autobr' /&gt;
&#8230;&lt;br class='autobr' /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Session management &lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Session verification&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;In order to verify the validity of the session, the third-party application should restart the authorisation request specifying additional parameters:&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;prompt&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;td&gt;Define the S-money interaction with the user, &lt;strong&gt;always &lt;/strong&gt; set to &#171; none &#187; in such a case&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;id_token_hint&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;td&gt;id_token previously used&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If the session is no longer valid, the returned error will be &#171; login_required &#187;. If the session is valid, the standard scenario will apply.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;End of session&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The third-party application can initiate to end a user's session, it redirects the user towards the endpoint of the session end.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://rest.s-money.fr/oauth/connect/endsession&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr/oauth/connect/endsession&lt;/a&gt;?&lt;br class='autobr' /&gt; Id_token_hint=ID_TOKEN&lt;br class='autobr' /&gt; &amp;post_logout_redirect_uri=RETURN_URL&lt;br class='autobr' /&gt;
&amp;state=STATE&lt;/p&gt;
&lt;p&gt;Parameters :&lt;br class='autobr' /&gt;
&lt;strong&gt;id_token_hint&lt;/strong&gt; : (mandatory) current id_token retrieved at the authentication request&lt;br class='autobr' /&gt;
&lt;strong&gt;post_logout_redirect_uri &lt;/strong&gt;: (mandatory) redirection Uri&lt;br class='autobr' /&gt;
&lt;strong&gt;state &lt;/strong&gt;: mandatory) used by the client to maintain the application state between the request and the callback.&lt;/p&gt;
&lt;p&gt;The user will be then disconnected and redirected towards:&lt;br class='autobr' /&gt;
RETURN_URL?code=AUTH_CODE&amp;state=STATE&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>Introduction</title>
		<link>https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/introduction-205</link>
		<guid isPermaLink="true">https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/introduction-205</guid>
		<dc:date>2016-07-05T18:18:20Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Hadassa</dc:creator>



		<description>
&lt;p&gt;S-money ID uses the OpenID Connect 1.0 protocol, which is an identification layer on the OAuth 2.0 protocol. It allows the third-party application to verify the identity of an S-money user based on the authentication performed by the S-money server and also to obtain basic information about the user. &lt;br class='autobr' /&gt;
S-money ID is available in the S-money users area, and also in the dedicated users area. &lt;br class='autobr' /&gt;
In the next section of the document, the S-money user indicates the user of the domain which (...)&lt;/p&gt;


-
&lt;a href="https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/" rel="directory"&gt;V1&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;S-money ID uses the OpenID Connect 1.0 protocol, which is an identification layer on the &lt;strong&gt;OAuth 2.0 protocol&lt;/strong&gt;. It allows the third-party application to verify the identity of an S-money user based on the authentication performed by the S-money server and also to obtain basic information about the user.&lt;/p&gt;
&lt;p&gt;S-money ID is available in the S-money users area, and also in the dedicated users area.&lt;/p&gt;
&lt;p&gt;In the next section of the document, the S-money user indicates the user of the domain which interacts with the third-party application.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Enregistrer l'application tierce</title>
		<link>https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/enregistrement-de-l-application</link>
		<guid isPermaLink="true">https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/enregistrement-de-l-application</guid>
		<dc:date>2015-07-28T17:06:49Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Axel</dc:creator>



		<description>
&lt;p&gt;Afin de r&#233;cup&#233;rer les &#233;l&#233;ments d'authentifications de l'application tierce, il faut enregistrer l'application tierce au sein du SI S-money. &lt;br class='autobr' /&gt;
Cet enregistrement par le back-office S-money fait suite &#224; l'&#233;tablissement d'une relation commerciale entre l'interm&#233;diaire propri&#233;taire de l'application tierce et S-money. Une application tierce est associ&#233;e &#224; un utilisateur de r&#244;le interm&#233;diaire. &lt;br class='autobr' /&gt;
Les informations &#224; fournir lors de l'enregistrement de l'application sont : Les fonctions utilisables par l'application (...)&lt;/p&gt;


-
&lt;a href="https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/" rel="directory"&gt;V1&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Afin de r&#233;cup&#233;rer les &#233;l&#233;ments d'authentifications de l'application tierce, il faut enregistrer l'application tierce au sein du SI S-money.&lt;/p&gt;
&lt;p&gt;Cet enregistrement par le back-office S-money fait suite &#224; l'&#233;tablissement d'une relation commerciale entre l'interm&#233;diaire propri&#233;taire de l'application tierce et S-money. Une application tierce est associ&#233;e &#224; un utilisateur de r&#244;le interm&#233;diaire.&lt;/p&gt;
&lt;p&gt;Les informations &#224; fournir lors de l'enregistrement de l'application sont :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; Les fonctions utilisables par l'application tierce&lt;/li&gt;&lt;li&gt; L'url de retour des appels &#224; l'API S-money&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;En retour, S-money fournit un identifiant unique d'application tierce et un secret propre &#224; l'application tierce.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Cin&#233;matique g&#233;n&#233;rale&lt;/h3&gt;
&lt;p&gt;Le protocole S-money ID suit les &#233;tapes suivantes :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; L'application tierce envoie une requ&#234;te &#224; S-money&lt;/li&gt;&lt;li&gt; S-money authentifie l'utilisateur et obtient l'autorisation&lt;/li&gt;&lt;li&gt; S-money r&#233;pond &#224; l'application tierce avec un jeton d'identification (ID Token) et un jeton d'acc&#232;s (Access token)&lt;/li&gt;&lt;li&gt; L'application tierce peut alors demander les informations de l'utilisateur via l'acc&#232;s &#224; la ressource UserInfo&lt;/li&gt;&lt;li&gt; S-money retourne la ressource UserInfo avec les revendications (Claims) associ&#233;es &#224; l'utilisateur&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&#034;spip&#034;&gt;Formulaire de demande d'autorisation&lt;/h3&gt;
&lt;p&gt;Quand l'application tierce souhaite authentifier l'utilisateur S-money ou d&#233;terminer si l'utilisateur S-money est d&#233;j&#224; authentifi&#233;, elle pr&#233;pare une requ&#234;te d'authentification &#224; envoyer au serveur S-money.&lt;/p&gt;
&lt;p&gt;Une fois cette requ&#234;te d'authentification pr&#233;par&#233;e, l'application tierce l'envoie au serveur S-money en utilisant le protocole HTTPS.&lt;/p&gt;
&lt;p&gt;En g&#233;n&#233;ral cet envoi est r&#233;alis&#233; via une r&#233;ponse http 302 Redirect qui provoque l'envoi par le navigateur de la requ&#234;te d'authentification vers le serveur S-money :&lt;/p&gt;
&lt;p&gt;HTTP/1.1 302 Found&lt;br class='autobr' /&gt;
Location : https://rest.s-moneyfr/oauth/authorize?&lt;br class='autobr' /&gt; response_type=code&lt;br class='autobr' /&gt; &amp;client_id=&#8230;&lt;br class='autobr' /&gt; &amp;redirect_uri=&#8230;&lt;br class='autobr' /&gt; &amp;scope=openid &#8230;&lt;br class='autobr' /&gt; &amp;state=&#8230;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Requ&#234;te d'authentification&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://rest.s-money.fr/oauth/Home/authorize&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr/oauth/Home/authorize&lt;/a&gt; ?&lt;br class='autobr' /&gt;
client_id=YOUR_APP_ID&lt;br class='autobr' /&gt;
&amp;redirect_uri=RETURN_URL&lt;br class='autobr' /&gt;
&amp;response_type=code&lt;br class='autobr' /&gt;
&amp;scope=openid SCOPE&lt;br class='autobr' /&gt;
&amp;state=STATE&lt;br class='autobr' /&gt;
&amp;role=ROLE&lt;/p&gt;
&lt;p&gt;Param&#232;tres :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;client_id&lt;/strong&gt; : (obligatoire) Identifiant de l'application tierce.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;redirect_uri&lt;/strong&gt; : (obligatoire) Uri de redirection&lt;/li&gt;&lt;li&gt; &lt;strong&gt;response_type&lt;/strong&gt; : (obligatoire) doit &#234;tre &#224; &#034;code&#034;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;scope &lt;/strong&gt; : (obligatoire) droits demand&#233;s. Il doit obligatoirement contenir au moins la valeur openid&lt;/li&gt;&lt;li&gt; &lt;strong&gt;state &lt;/strong&gt; : (obligatoire) utilis&#233; par le client pour maintenir l'&#233;tat de son application entre la requ&#234;te et le callback.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;R&#233;ponse&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Si l'utilisateur est correctement authentifi&#233; par S-money, il sera alors redirig&#233; vers :&lt;br class='autobr' /&gt;
RETURN_URL ?code=AUTH_CODE&amp;state=STATE&lt;/p&gt;
&lt;p&gt;Param&#232;tres :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;code&lt;/strong&gt; : le code d'autorisation&lt;/li&gt;&lt;li&gt; &lt;strong&gt;state &lt;/strong&gt; : retourne la valeur exacte pass&#233;e &#224; l'appel du formulaire.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ci-dessous un exemple de redirection de l'utilisateur suite &#224; authentification par le serveur S-money :&lt;/p&gt;
&lt;p&gt;HTTP/1.1 302 Found&lt;br class='autobr' /&gt;
Location : &lt;a href=&#034;https://client.example.org/cb&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://client.example.org/cb&lt;/a&gt; ?&lt;br class='autobr' /&gt;
code=&#8230;.&lt;br class='autobr' /&gt;
&amp;state=&#8230;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Authentification de l'application tierce&lt;/h3&gt;
&lt;p&gt;Pour chaque appel au point de terminaison oauth/token, il faut passer le header HTTP Authorization en mode Basic dans la requ&#234;te :&lt;/p&gt;
&lt;p&gt;Authorization : Basic CHAINE_ENCODEE&lt;/p&gt;
&lt;p&gt;La chaine &#224; passer est la combinaison de l'identifiant de l'application cliente (exemple : &#034;appidentifier&#034;) et son secret, combin&#233;e comme suit : &#034;appidentifier:secret&#034;, encod&#233;e ensuite en Base64.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Echange du code d'autorisation (auth code) contre les jetons d'acc&#232;s et d'identification&lt;/h3&gt;
&lt;p&gt;De mani&#232;re &#224; obtenir les jetons d'acc&#232;s et d'identification, L'application tierce effectue une requ&#234;te pr&#233;sentant le code d'autorisation obtenue pr&#233;c&#233;demment.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Requ&#234;te&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;POST /oauth/token HTTP/1.1&lt;br class='autobr' /&gt;
Content-Type : application/x-www-form-urlencoded&lt;br class='autobr' /&gt;
Content-Length : 81&lt;br class='autobr' /&gt;
Authorization : Basic CHAINE_ENCODEE&lt;br class='autobr' /&gt;
grant_type=authorization_code&amp;code=AUTH_CODE&amp;redirect_uri=RETURN_URL&lt;/p&gt;
&lt;p&gt;Param&#232;tres :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;grant_type&lt;/strong&gt; : Doit &#234;tre &#224; &#034;authorization_code&#034;.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;code&lt;/strong&gt; : le code d'autorisation pr&#233;alablement r&#233;cup&#233;r&#233;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;R&#233;ponse&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;{&lt;br /&gt;
&#034;access_token&#034;:&#034;ACCESS_TOKEN&#034;,&lt;br /&gt;
&#034;token_type&#034;:&#034;Bearer&#034;,&lt;br /&gt;
&#034;expires_in&#034;:1799,&lt;br /&gt;
&#034;refresh_token&#034;:&#034;REFRESH_TOKEN&#034;,&lt;br /&gt;
&#8220;Id_token&#8221;:&#8221;&#8230;&#8230;&#8221;&lt;br /&gt;
}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Param&#232;tres :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;access_token&lt;/strong&gt; : Le jeton d'acc&#232;s qui permet de faire des appels &#224; l'API S-money.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;token_type&lt;/strong&gt; : bearer&lt;/li&gt;&lt;li&gt; &lt;strong&gt;expires_in&lt;/strong&gt; : temps de validit&#233; du token (en secondes)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;refresh_token&lt;/strong&gt; : permet de l'&#233;changer contre un jeton valide lorsque le jeton d'acc&#232;s aura expir&#233;. Un jeton d'actualisation n'est valable qu'une seule fois.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Id_token&lt;/strong&gt; : jeton de s&#233;curit&#233; qui contient des revendications (Claims) concernant l'authentification de l'utilisateur par S-money. L'id-token est repr&#233;sent&#233; comme un JSON Web Token.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;Format des erreurs&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;HTTP/1.1 400 Bad Request&lt;br class='autobr' /&gt;
Content-Type : application/json&lt;br class='autobr' /&gt;
&lt;i&gt;&lt;br class='autobr' /&gt; &#034;error&#034; :&#034;CODE_ERREUR&#034;,&lt;br class='autobr' /&gt; &#034;error_description&#034; :&#034;DESCRIPTION&#034;&lt;br class='autobr' /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Codes d'erreur possibles :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_request&#034;&lt;/strong&gt; : The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_client&#034;&lt;/strong&gt; : Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;unauthorized_client&#034;&lt;/strong&gt; : The client is not authorized to request an authorization code or access token using this method.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;access_denied&#034;&lt;/strong&gt; : The resource owner or authorization server denied the request.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_grant&#034;&lt;/strong&gt; : The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;unsupported_grant_type&#034;&lt;/strong&gt; : The authorization grant type is not supported by the authorization server.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;unsupported_response_type&#034;&lt;/strong&gt; : The authorization server does not support obtaining an authorization code using this method.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;invalid_scope&#034;&lt;/strong&gt; : The requested scope is invalid, unknown, or malformed.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;server_error&#034;&lt;/strong&gt; : The authorization server encountered an unexpected condition that prevented it from fulfilling the request.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#034;temporarily_unavailable&#034;&lt;/strong&gt; : The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&#034;spip&#034;&gt;Format du jeton d'identification&lt;/h3&gt;
&lt;p&gt;Le jeton d'identification contient les claims suivants :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; &lt;strong&gt;iss&lt;/strong&gt; : contient la valeur &lt;a href=&#034;https://rest.s-money.fr&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;sub&lt;/strong&gt; : identifiant interne S-money de l'utilisateur&lt;/li&gt;&lt;li&gt; &lt;strong&gt;aud&lt;/strong&gt; : identifiant de l'application tierce&lt;/li&gt;&lt;li&gt; &lt;strong&gt;exp&lt;/strong&gt; : date/heure d'expiration du jeton en nombre de secondes depuis 1970-01-01T0:0:0Z en UTC&lt;/li&gt;&lt;li&gt; &lt;strong&gt;iat&lt;/strong&gt; : date/heure &#224; laquelle le jeton a &#233;t&#233; &#233;mis repr&#233;sent&#233;e en nombre de secondes depuis 1970-01-01T0:0:0Z en UTC&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Le jeton est repr&#233;sent&#233; sous la forme d'un token JWT, selon le format suivant :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base64URL(Ent&#234;te).Base64URL(corps).Base64URL(signature)&lt;br class='autobr' /&gt;
&lt;/strong&gt;Avec :&lt;br class='autobr' /&gt;
&lt;strong&gt;Ent&#234;te :&lt;br class='autobr' /&gt;
&lt;/strong&gt;&lt;i&gt;&#034;type&#034; :&#034;JWT&#034;,&lt;br class='autobr' /&gt; &#034;alg&#034; :&#034;HS256&#034;&lt;/i&gt;&lt;br class='autobr' /&gt;
&lt;strong&gt;Corps :&lt;br class='autobr' /&gt;
&lt;/strong&gt;&lt;i&gt;&lt;br class='autobr' /&gt; &#034;iss&#034; : &#034;&lt;a href=&#034;https://rest.s-money.fr&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr&lt;/a&gt;&#034;,&lt;br class='autobr' /&gt; &#034;sub&#034; : &#034;&#8230;&#034;,&lt;br class='autobr' /&gt; &#034;aud&#034; : &#034;&#8230;&#034;,&lt;br class='autobr' /&gt; &#034;exp&#034; : &#8230;,&lt;br class='autobr' /&gt; &#034;iat&#034; : &#8230;&lt;br class='autobr' /&gt; &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Signature :&lt;br class='autobr' /&gt;
&lt;/strong&gt;HMAC SHA-256(Base64URL(Ent&#234;te).Base64URL(corps),secret), secret &#233;tant le secret de l'application tierce.&lt;br class='autobr' /&gt;
L'encodage BAS64URL est un encodage BASE64URL SANS padding, c'est-&#224;-dire sans l'&#233;ventuel ajout du caract&#232;re &#8216;='.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Validation du jeton d'identification&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;D&#233;codage du token JWT&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;A la r&#233;ception du token JWT, l'application tierce r&#233;alise les &#233;tapes suivantes pour d&#233;coder le token JWT :&lt;/p&gt;
&lt;p&gt;S&#233;parer la chaine de caract&#232;res selon le caract&#232;re &#8216;.' de mani&#232;re &#224; isoler les 3 segments :&lt;br class='autobr' /&gt;
Base64URL(ent&#234;te)&lt;br class='autobr' /&gt;
Base64URL(corps)&lt;br class='autobr' /&gt;
Base64URL(signature)&lt;br class='autobr' /&gt;
D&#233;coder les segments Base64URL(ent&#234;te) et Base64URL(corps) de mani&#232;re &#224; obtenir :&lt;/p&gt;
&lt;p&gt;Ent&#234;te&lt;br class='autobr' /&gt;
Corps&lt;br class='autobr' /&gt;
&lt;i&gt;Validation du token JWT&lt;/i&gt;&lt;br /&gt;
Une fois le token JWT d&#233;cod&#233;,&lt;br class='autobr' /&gt;
V&#233;rifier que l'ent&#234;te est du JSON valide&lt;br class='autobr' /&gt;
V&#233;rifier que le corps est du JSON valide&lt;br class='autobr' /&gt;
V&#233;rifier que le param&#232;tre alg de l'ent&#234;te est bien &#8216;HS256'&lt;br class='autobr' /&gt;
Calculer la signature tel que d&#233;crit dans la section 2.5&lt;br class='autobr' /&gt;
Si l'encodage en base64URL de la signature calcul&#233;e est &#233;gal au segment Base64URL(signature) du token JWT re&#231;u, alors le token JWT est valide.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Validation de l'id_token&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Une fois le token JWT valid&#233;, il est possible de valider l'id_token contenu dans le corps. Pour cela, les &#233;tapes &#224; suivre par l'application tierce sont les suivantes :&lt;br class='autobr' /&gt;
La valeur du param&#232;tre iss doit &#234;tre &#233;gale &#224; &#171; rest.s-money.fr &#187;&lt;br class='autobr' /&gt;
La valeur du param&#232;tre aud doit &#234;tre &#233;gale &#224; l'identifiant (&#8216;client_id') de l'application tierce&lt;br class='autobr' /&gt;
L'heure actuelle doit &#234;tre avant la valeur du param&#232;tre exp&lt;br class='autobr' /&gt;
Si la valeur du param&#232;tre iat est trop ancienne par rapport &#224; l'heure actuelle, alors le jeton doit &#234;tre rejet&#233;&lt;br class='autobr' /&gt;
Une fois l'id_token valid&#233; par l'application tierce, celle-ci peut consid&#233;rer l'utilisateur comme authentifi&#233;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;La ressource UserInfo&lt;/h3&gt;
&lt;p&gt;La ressource UserInfo permet d'obtenir des informations associ&#233;es &#224; l'utilisateur authentifi&#233;. &lt;br class='autobr' /&gt;
Le param&#232;tre &lt;strong&gt;sub &lt;/strong&gt;est toujours retourn&#233; dans la r&#233;ponse de la ressource UserInfo. Pour se prot&#233;ger contre les attaques bas&#233;es sur la substitution de jeton, l'application tierce doit v&#233;rifier que la valeur du param&#232;tre sub est &#233;gale &#224; la valeur qui &#233;tait pr&#233;sente dans le param&#232;tre &lt;strong&gt;sub&lt;/strong&gt; de l'id_token. Si elles ne sont pas &#233;gales la ressource UserInfo ne doit pas &#234;tre utilis&#233;e (et un dispositif d'alerte mis en place permettant d'investiguer une &#233;ventuelle attaque).&lt;br class='autobr' /&gt;
Les informations inclues dans la r&#233;ponse de la ressource UserInfo d&#233;pendent de la valeur du param&#232;tre scope de la requ&#234;te d'autorisation ayant permis d'obtenir les jetons d'acc&#232;s et d'identification. Le tableau ci-dessous pr&#233;sente les valeurs possibles pour le param&#232;tre scope.&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;openid&lt;/td&gt;
&lt;td&gt;requis&lt;/td&gt;
&lt;td&gt;Informe le serveur S-money que l'application tierce effectue une requ&#234;te S-money ID&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;profile&lt;/td&gt;
&lt;td&gt;Optionnel&lt;/td&gt;
&lt;td&gt;Permet d'obtenir le pr&#233;nom (name), le nom de famille (family_name), la date de naissance (birth_date) de l'utilisateur&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;email&lt;/td&gt;
&lt;td&gt;Optionnel&lt;/td&gt;
&lt;td&gt;Permet d'obtenir l'email de l'utilisateur (email) et/ou l'email v&#233;rifi&#233; de l'utilisateur (email_verified)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;address&lt;/td&gt;
&lt;td&gt;Optionnel&lt;/td&gt;
&lt;td&gt;Permet d'obtenir l'adresse de l'utilisateur avec les informations suivantes : street_address, locality, postal_code, country&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;phone&lt;/td&gt;
&lt;td&gt;Optionnel&lt;/td&gt;
&lt;td&gt;Permet d'obtenir le t&#233;l&#233;phone mobile (phone) et/ou le t&#233;l&#233;phone mobile v&#233;rifi&#233; de l'utilisateur (phone_verified)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;offline_access&lt;/td&gt;
&lt;td&gt;Optionnel&lt;/td&gt;
&lt;td&gt;Permet de demander un refresh token qui puisse &#234;tre utilis&#233; pour obtenir la ressource UserInfo m&#234;me si l'utilisateur n'est pas connect&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ci-dessous un exemple de scope :&lt;/p&gt;
&lt;p&gt;scope=openid profile email phone&lt;/p&gt;
&lt;p&gt;L'obtention de la ressource UserInfo se fait par l'application tierce de la mani&#232;re suivante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requ&#234;te :&lt;/strong&gt;&lt;br class='autobr' /&gt;
GET /api/[domaine]/UserInfo HTTP/1.1 &lt;br class='autobr' /&gt;
Accept : application/vnd.s-money.v1+json&lt;br class='autobr' /&gt;
Authorization : Bearer ACCESS_TOKEN&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;R&#233;ponse :&lt;/strong&gt;&lt;br class='autobr' /&gt;
HTTP/1.1 200 OK&lt;br class='autobr' /&gt;
Content-Type : application/vnd.s-money.v1+json&lt;br class='autobr' /&gt;
&lt;i&gt;&lt;br class='autobr' /&gt;
sub : &#8220;&#8230;&#8221;,&lt;br class='autobr' /&gt;
family_name :&#8221;&#8230;&#8221;,&lt;br class='autobr' /&gt;
name :&#8221;&#8230;&#8221;,&lt;br class='autobr' /&gt;
birthdate :&#8221;&#8230;.&#8221;,&lt;br class='autobr' /&gt;
&#8230;&lt;br class='autobr' /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Gestion des sessions&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;V&#233;rification de la session&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Dans le but de v&#233;rifier la validit&#233; de la session, l'application tierce doit recommencer la demande d'autorisation en pr&#233;cisant les param&#232;tres suppl&#233;mentaires :&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;prompt&lt;/td&gt;
&lt;td&gt;Requis&lt;/td&gt;
&lt;td&gt;D&#233;fini l'interaction du serveur S-money avec l'utilisateur, &lt;strong&gt;obligatoirement&lt;/strong&gt; valoris&#233; &#224; &#171; none &#187; dans ce cas&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;id_token_hint&lt;/td&gt;
&lt;td&gt;Requis&lt;/td&gt;
&lt;td&gt;id_token pr&#233;c&#233;demment utilis&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Si la session n'est plus valide, l'erreur retourn&#233;e sera &#171; login_required &#187;. Si la session est valide le sc&#233;nario standard s'applique.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Fin de session&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;L'application tierce peut initier la fin de session de l'utilisateur, elle redirige alors l'utilisateur vers l'endpoint de fin de session.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://rest.s-money.fr/oauth/connect/endsession&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://rest.s-money.fr/oauth/connect/endsession&lt;/a&gt; ?&lt;br class='autobr' /&gt; Id_token_hint=ID_TOKEN&lt;br class='autobr' /&gt; &amp;post_logout_redirect_uri=RETURN_URL&lt;br class='autobr' /&gt;
&amp;state=STATE&lt;/p&gt;
&lt;p&gt;Param&#232;tres :&lt;br class='autobr' /&gt;
&lt;strong&gt;id_token_hint&lt;/strong&gt; : (obligatoire) id_token courant r&#233;cup&#233;r&#233; &#224; la requ&#234;te d'authentification &lt;br class='autobr' /&gt;
&lt;strong&gt;post_logout_redirect_uri &lt;/strong&gt; : (obligatoire) Uri de redirection&lt;br class='autobr' /&gt;
&lt;strong&gt;state &lt;/strong&gt; : (obligatoire) utilis&#233; par le client pour maintenir l'&#233;tat de son application entre la requ&#234;te et le callback.&lt;/p&gt;
&lt;p&gt;L'utilisateur sera alors d&#233;connect&#233; et redirig&#233; vers :&lt;br class='autobr' /&gt;
RETURN_URL ?code=AUTH_CODE&amp;state=STATE&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Introduction</title>
		<link>https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/introduction</link>
		<guid isPermaLink="true">https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/article/introduction</guid>
		<dc:date>2015-07-28T17:05:58Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Axel</dc:creator>



		<description>
&lt;p&gt;S-money ID utilise le protocole OpenID Connect 1.0, qui est une couche d'identification sur le protocole OAuth 2.0. Il permet &#224; l'application tierce de v&#233;rifier l'identit&#233; d'un utilisateur S-money bas&#233; sur l'authentification r&#233;alis&#233;e par le serveur S-money, ainsi que d'obtenir des informations basiques sur l'utilisateur. &lt;br class='autobr' /&gt;
S-money ID est disponible sur le domaine d'utilisateurs S-money ainsi que sur les domaines d'utilisateurs d&#233;di&#233;s. &lt;br class='autobr' /&gt;
Dans la suite du document, l'utilisateur S-money d&#233;signe (...)&lt;/p&gt;


-
&lt;a href="https://api.s-money.fr/documentation/utiliser-l-api/s-money-id/41/" rel="directory"&gt;V1&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;S-money ID utilise le protocole OpenID Connect 1.0, qui est une couche d'identification sur le protocole &lt;strong&gt;OAuth 2.0. &lt;/strong&gt; Il permet &#224; l'application tierce de v&#233;rifier l'identit&#233; d'un utilisateur S-money bas&#233; sur l'authentification r&#233;alis&#233;e par le serveur S-money, ainsi que d'obtenir des informations basiques sur l'utilisateur.&lt;/p&gt;
&lt;p&gt;S-money ID est disponible sur le domaine d'utilisateurs S-money ainsi que sur les domaines d'utilisateurs d&#233;di&#233;s.&lt;/p&gt;
&lt;p&gt;Dans la suite du document, l'utilisateur S-money d&#233;signe l'utilisateur du domaine avec lequel l'application tierce interagit.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
