Xamarin中的ADAL身份验证不适用于所有Office365用户

时间:2019-02-27 21:03:12

标签: azure xamarin.forms xamarin.ios azure-active-directory msal

我正在尝试使用Office365用户对Xamarin应用进行身份验证。我使用office365用户在Aure Active Directory中注册了该应用程序。下面的代码对我的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);
}   

0 个答案:

没有答案