2017-09-06 5 views
0

Je cherchais here environ rafraîchir jetons.Impossible de localiser le jeton d'actualisation avec Microsoft Graph

Je possède ce code pour obtenir un jeton d'accès:

if(bPromptUser) 
{ 
    _AuthResult = await PublicClientApp.AcquireTokenAsync(_scopes); //Opens Microsoft Login Screen 

    using (RegistryKey key = Registry.CurrentUser.CreateSubKey(keyName)) 
    { 
     key.OpenSubKey(keyName, true); 
     key.SetValue("Status", _AuthResult.AccessToken); 
     key.SetValue("Expire", _AuthResult.ExpiresOn.ToLocalTime().ToString()); 
     key.Close(); 

     token = _AuthResult.AccessToken; 
    } 

    // Append the access token to the request. 
    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token); 
} 

Mais mon _AuthResult n'a pas en fait un RefreskToken dans la liste. Est-ce parce que j'utilise v1 de Microsoft Graph?

Mise à jour

Selon la documentation la portée proposée dans la réponse est activée par défaut?

enter image description here

Répondre

0

Microsoft fournissent des exemples de code pour TokenCacheHelper. Ajoutez ceci à votre projet et fournissez une instance de celui-ci. Ensuite, définissez le chemin. Comme ceci:

TokenCacheHelper.CacheFilePath = Program.Options.TokenCachePath; 
PublicClientApp = new PublicClientApplication(_AppID, "https://login.microsoftonline.com/common", TokenCacheHelper.GetUserCache()); 

C'est tout ce que vous devez faire. Le fichier cache contient tous les détails du jeton, y compris le jeton d'actualisation.

Plus de détails sont dans la conversation here. En partie:

En ce qui vous aider à mettre en œuvre le cache jeton, pour stocker le contenu du cache jeton, vous devez:

  1. Copiez le TokenCacheHelper d'ici à votre projet.
  2. Si vous voulez vraiment enregistrer le contenu du cache au Registre, changer la mise en œuvre:
    • AfterAccessNotification à écrire au registre au lieu d'un fichier this line
    • BeforeAccessNotification lire lesemployés Registre au lieu d'un fichier this line
  3. Construct la PublicClientApplication comme le montre votre ici (en passant le cache que vous obtenez en appelant TokenCacheHelper.GetUserCache(): https://github.com/Azure-Samples/active-directory-dotnet-desktop-msgraph-v2/blob/master/active-directory-wpf-msgraph-v2/App.xaml.cs#L19:

    clientApp = new PublicClientApplication(ClientId, "https://login.microsoftonline.com/common", TokenCacheHelper.GetUserCache());

0

je crois lors de l'utilisation MSAL (et v2 point final auth) que vous ne recevez pas un jeton de rafraîchissement par défaut. Pour obtenir le jeton d'actualisation, vous devez demander la portée offline_access ainsi que les autres portées. S'il vous plaît voir https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference#openid-permissions pour plus de détails.

Hope this helps,

+0

Merci. Je viens de regarder le sujet. S'il vous plaît voir ma mise à jour question. –

+1

Va demander à quelqu'un d'autre de regarder ça. –

+0

Merci. J'attends une mise à jour avec impatience. –