使用Windows Universal App的Active Directory身份验证库

时间:2015-06-30 11:45:28

标签: c# visual-studio-2015 win-universal-app adal

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

目前的稳定版本(2.18.206251556)给了我例外:

  

System.ExecutionEngineException未处理HResult = -2146233082
  Message ='System.ExecutionEngineException'类型的异常   抛出。的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给了我错误:

  

严重级代码描述项目文件行错误CS1503参数3:   无法从'System.Uri'转换为   'Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential'CloudScheduler

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

2 个答案:

答案 0 :(得分:3)

好的,所以我设法让这个样本Todolist应用程序工作。 AcquireTokenAsync的重载现在需要传入一个新的PlatformParameters选项。一旦你添加了你的好处。

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

答案 1 :(得分:0)

ADAL 2.18应与通用应用程序配合使用。您使用的是Win10 / VS2015 / Win10工具版本?此外,您是否可以按照https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/blob/master/README.md中的说明捕获日志并在此处发布? 大约3.x - 那还是一个阿尔法。有关如何使用其API的信息,请参阅https://github.com/AzureADSamples/NativeClient-MultiTarget-DotNet - 但是您不应该使用3.x - 2.18。