AcquireTokenSilentAsync не работает - PullRequest
0 голосов
/ 27 августа 2018

У меня есть следующие настройки:

var authContext = new AuthenticationContext("https://login.microsoftonline.com/common");
string redirectUri = Url.Action("Authorize", "Planner", null, Request.Url.Scheme);

Uri authUri = authContext.GetAuthorizationRequestURL("https://graph.microsoft.com/", SettingsHelper.ClientId,
                                                      new Uri(redirectUri), UserIdentifier.AnyUser, null);
// Redirect the browser to the Azure signin page
return Redirect(authUri.ToString());

Это приведет вас к:

// Get the 'code' parameter from the Azure redirect
string authCode = Request.Params["code"];

// The same url we specified in the auth code request
string redirectUri = Url.Action("Authorize", "Planner", null, Request.Url.Scheme);

// Use client ID and secret to establish app identity
ClientCredential credential = new ClientCredential(SettingsHelper.ClientId, SettingsHelper.ClientSecret);

//FileTokenCache at specific location
TokenCache fileTokenCache = new FilesBasedAdalV3TokenCache("C:\\temp\\justin.bin");
AuthenticationContext authContext = new AuthenticationContext(SettingsHelper.AzureADAuthorityTenantID, fileTokenCache);

AuthenticationResult authResult = null;
try
{
     // Get the token silently first
     authResult = await authContext.AcquireTokenSilentAsync(SettingsHelper.O365UnifiedResource, credential, UserIdentifier.AnyUser);   
}
catch (AdalException ex)
{
     authContext = new AuthenticationContext(SettingsHelper.AzureADAuthority, fileTokenCache);

     authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(authCode, new Uri(redirectUri), credential, SettingsHelper.O365UnifiedResource);

}

Токен успешно сохранен в файле и, похоже, он также успешно извлекается,Однако автоматическое получение токена по-прежнему дает исключение, чтобы сначала получить токен, используя функцию без вывода сообщений.Что мне не хватает, пожалуйста?

Обратите внимание, что для O365UnifiedResource установлено значение https://graph.microsoft.com/

1 Ответ

0 голосов
/ 27 августа 2018

решил эту проблему, используя

new UserIdentifier("<email address used to login microsoft apps>", UserIdentifierType.RequiredDisplayableId)

вместо

UserIdentifier.AnyUser

и исправил идентификатор клиента в качестве идентификатора приложения, как указано при регистрации приложения

...