具有 Windows 通用应用程序的 Active Directory 身份验证库

Active Directory Authentication Library with Windows Universal App

ADAL 的哪个版本应该或计划支持 UWP 样式的应用程序?

当前稳定版本 (2.18.206251556) 出现异常:

System.ExecutionEngineException was unhandled HResult=-2146233082
Message=Exception of type 'System.ExecutionEngineException' was thrown. InnerException:

当我尝试使用以下代码获取令牌时:

    public async Task<string> GetOAuthTokenFromAAD()
    {
        var authenticationContext = new AuthenticationContext(String.Format("{0}/{1}", ADALServiceURL, TenantDomain));

        var result = await authenticationContext.AcquireTokenAsync(string.Format("{0}/", ARMBillingServiceURL), ClientId, new Uri(ADALRedirectURL));

        if (result == null)
        {
            throw new InvalidOperationException("Failed to obtain the JWT token");
        }
        return result.AccessToken;
    }

最新版本 3.4.206191646-alpha 给我错误:

Severity Code Description Project File Line Error CS1503 Argument 3: cannot convert from 'System.Uri' to 'Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential' CloudScheduler

如果理解正确,则不应要求将 UserCredential 参数作为参数,而应使用 URI 类型。

好的,所以我设法让示例 Todolist 应用程序正常工作。 AcquireTokenAsync 的重载现在需要传入一个新的 PlatformParameters 选项。一旦你添加了它,你就可以开始了。

var p = new PlatformParameters(PromptBehavior.Always, false); 
AuthenticationResult result = await authContext.AcquireTokenAsync(todoListResourceId, clientId, redirectURI, p);

ADAL 2.18 应该适用于通用应用程序。您使用的 Win10/VS2015/Win10 工具版本是什么?此外,您能否按照 https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/blob/master/README.md 和 post 中的说明捕获日志? 关于 3.x - 这仍然是一个 alpha。请参阅 https://github.com/AzureADSamples/NativeClient-MultiTarget-DotNet 以了解如何使用其 API - 但是您不需要使用 3.x - 2.18 应该可以使用。