Renouvelle un token OAuth2 d'un utilisateur si ce token est expiré.
// Session OAuth
TokenSession est un AuthToken // Session OAuth
bufToken est un Buffer
sFichierPersistanceAuth est une chaîne = fRepDonnées() + [fSep] + "AuthSession.bin"
// Paramètres de connexion OAuth
m_Svc est un OAuth2Paramètres // Service OAuth (Login)
m_Svc.ClientID = "mon_client_id"
m_Svc.ClientSecret = "123456-mon_client_secret-387854"
m_Svc.URLAuth = "https://api.serveur.com/connect/authorize"
m_Svc.URLToken = "https://api.serveur.com/connect/token"
m_Svc.Scope = "openid profile offline_access"
m_Svc.URLRedirection = "http://localhost:3333"
// ou
// m_Svc est un OpenIDParamètres // Service OAuth (Login)
// m_Svc.ClientID = "mon_client_id"
// m_Svc.ClientSecret = "123456-mon_client_secret-387854"
// m_Svc.URLConfiguration = "https://api.serveur.com/.well-known/openid-configuration"
// m_Svc.URLRedirection = "http://localhost:3333"
// Token précédemment mémorisé ?
SI fFichierExiste(sFichierPersistanceAuth) ALORS
QUAND EXCEPTION DANS
// Charge la session
bufToken = fChargeBuffer(sFichierPersistanceAuth)
Désérialise(TokenSession, bufToken, psdBinaire)
FAIRE
// Erreur de relecture du token
ToastAffiche("Session mémorisée invalide")
SINON
// Token est expiré ou va expirer dans la minute qui arrive
// et il est renouvelable ?
SI (TokenSession.DateExpiration-1min < DateHeureSys()) _ET_
TokenSession.Actualisation <> "" ALORS
TokenSession = TokenSession.RenouvelleToken()
SI TokenSession.Valide ALORS
Sérialise(TokenSession, bufToken, psdBinaire)
fSauveBuffer(sFichierPersistanceAuth, bufToken)
SINON
Erreur("Echec du renouvellement de la session")
FIN
FIN
FIN
FIN
SI PAS TokenSession.Valide ALORS
// Connexion au service
TokenSession = AuthIdentifie(m_Svc)
SI TokenSession.Valide ALORS
// Sauvegarde du token
Sérialise(TokenSession, bufToken, psdBinaire)
fSauveBuffer(sFichierPersistanceAuth, bufToken)
FIN
FIN
SI PAS TokenSession.Valide ALORS
Erreur("Impossible de démarrer la session", ErreurInfo())
SINON
MonIdentité est un OpenIDIdentité = OpenIDLitIdentité(TokenSession)
SI MonIdentité.Valide ALORS
// Les informations récupérables sur l'identité de la personne connectée
// dépendent du site qui permet l’authentification
Info("Connexion OK : " + MonIdentité.Source)
SINON
Info("Connexion valide, mais échec identité ", ErreurInfo())
FIN
FIN
Syntaxe
<Résultat> = <Token>.RenouvelleToken()
<Résultat> : Variable de type AuthToken
Variable de type AuthToken correspondant au token renouvelé.
<Token> : Variable de type AuthToken
Nom de la variable de type AuthToken correspondant au token à renouveler. Ce token est obtenu par exemple avec la fonction AuthIdentifie.
Remarques
Selon le token, il n'est pas toujours possible de le renouveler. La propriété
Actualisation de la variable de type
AuthToken permet de savoir si le token est renouvelable.
Composante : wd280ggl.dll