Office 365 Rest API - Authentification daemon de la semaine

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Office 365 Rest API - Authentification daemon de la semaine

Message par ForumBot »

Office 365 Rest API - Authentification daemon de la semaine




Source : Stack Overflow [office365]

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Office 365 Rest API - Authentification daemon de la semaine

Message par ayi »

Au lieu d’un client_secret dans le corps de votre requête, vous avez besoin d’un client_assertion. C’est un peu plus complexe, mais c’est la raison pour laquelle vous avez besoin de ce certificat.


En gros, vous devez construire un JSON Web Token et le signer avec votre certificat en utilisant un hachage SHA256. Le jeton va ressembler à ceci :


En-tête :


{
"alg": "RS256",
"x5t": "..." // THUMBPRINT of Cert
}


Charge utile :


{
"aud": "https:\\/\\/login.windows.net\\/<The logged in user's tenant ID>\\/oauth2\\/token",
"exp": 1423168488,
"iss": "YOUR CLIENT ID",
"jti": "SOME GUID YOU ASSIGN",
"nbf": 1423167888,
"sub": "YOUR CLIENT ID"
}


Si vous suivez toujours, vous devez maintenant encoder en base64 les deux parties (séparément), puis les concaténer avec un ‘.’. Vous devriez donc maintenant avoir :


base64_header.base64_payload


Prenez maintenant cette chaîne et signez-la avec votre certificat, en utilisant un hachage SHA256. Puis encodez le résultat en base64, encodez-le en URL, puis ajoutez-le à la chaîne, de sorte que vous ayez maintenant :


base64_header.base64_payload.base64_signature


Enfin, incluez ceci dans votre POST vers le point de terminaison du jeton en tant que paramètre client_assertion, et incluez également un paramètre client_assertion_type défini sur “urn:ietf:params:oauth:client-assertion-type:jwt-bearer” :


req.set_form_data(
:grant_type => 'client_credentials',
:redirect_uri => 'http://spready.dev',
:resource => 'https://outlook.office365.com/',
:client_id => '== Client ID ==',
:client_assertion_type => 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
:client_assertion => 'base64_header.base64_payload.base64_signature'
)


J’espère que cela vous aide ! Tout ceci est basé sur mes recherches sur le fonctionnement d’ADAL, et je ne l’ai pas testé moi-même en Ruby.

Répondre

Revenir à « Excel & VBA »