Аутализация ADAL в Xamarin не работает для всех пользователей office365 - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь аутентифицировать приложение 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);
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...