Я пытаюсь аутентифицировать приложение Xamarin, используя пользователя office365.Я зарегистрировал приложение в Aure Active Directory, используя своего пользователя office365.Приведенный ниже код прекрасно работает для моего пользователя office365. Но, как только я использую любого другого пользователя office365, я получаю сообщение об ошибке.Подробности ошибок, указанные ниже
Сообщение об ошибке: Клиент не указал никаких разрешений для «AAD Graph» в запрошенных разрешениях при регистрации приложения клиента.Или администратор не согласился на арендатора.Или проверьте идентификатор приложения в запросе, чтобы убедиться, что он соответствует настроенному идентификатору клиентского приложения.Обратитесь к администратору, чтобы исправить конфигурацию или согласие от имени арендатора.
Я не уверен, почему приведенная ниже логика работает для моей учетной записи пользователя Office365 и не работает для остальных пользователей.Учетные записи пользователей office365
string authority = "https://login.windows.net/common";
string graphResourceUri = "https://graph.windows.net";
var data = await auth.Authenticate(authority, graphResourceUri, clientId, returnUri);
public async Task<AuthenticationResult> Authenticate(string authority, string resource, string clientId, string returnUri)
{
try
{
var authContext = new AuthenticationContext(authority);
if (authContext.TokenCache.ReadItems().Any())
authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
var controller = UIApplication.SharedApplication.KeyWindow.RootViewController;
var uri = new Uri(returnUri);
var platformParams = new PlatformParameters(controller);
var authResult = await authContext.AcquireTokenAsync(resource, clientId, uri, platformParams);
return authResult;
}
catch (Exception ex)
{
var error = ex.Message.ToString();
return null;
}
}
Для функции выхода из системы я использовал приведенный ниже код.
public void ClearAllCookies(string authority)
{
var authContext = new AuthenticationContext(authority);
authContext.TokenCache.Clear();
NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var cookie in CookieStorage.Cookies)
CookieStorage.DeleteCookie(cookie);
}