Получить токен доступа SharePoint из уже созданного токена доступа для ресурса Microsoft Graph (https://graph.microsoft.com)
Я пытаюсь получить токен доступа для семейства веб-сайтов SharePoint, используя уже сгенерированный токен доступа для графического ресурса Microsoft, и передать этот токен доступа для получения контекста семейства сайтов с помощью Pnp AuthManger.
Кто-нибудь может подсказать мне, как это можно сделать? это осуществимо или нет?
Мне известно о том, что для разных групп ресурсов можно сделать два разных запроса аутентификации.
Ниже приведена статья, но она содержит класс AuthenticationContext в Microsoft.IdentityModel.Clients.ActiveDirectory обновлен и больше не имеет метода AuthenticationContext.AcquireTokenByRefreshTokenAsync.
Примечание: я использую библиотеки.net для выше.
1 ответ
ADAL поддерживает получение токенов для нескольких ресурсов. Вы по-прежнему можете использовать библиотеку ADAL для выполнения ваших требований.
Да, в ADAL 3 метод AcquireTokenByRefreshToken не существует. Но токен обновления все еще присутствует в кэше токенов, вам на самом деле не нужно использовать токен обновления из собственного кода приложения. С ADAL 3, когда вы хотите получить токен доступа для другого ресурса, вы можете использовать AcquireTokenSilentAsync
метод:
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID));
ClientCredential credential = new ClientCredential(clientId, appKey);
result = await authContext.AcquireTokenSilentAsync(YourResource, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
При вызове этого метода он будет проверять кеш токена. Если это разностный ресурс, токен доступа не существует (или токен доступа истек), он будет использовать токен обновления (если он существует и не имеет срока действия), чтобы получить новый токен доступа для этого ресурса.