【问题标题】:WPF ADAL AcquireTokenAsyncWPF ADAL AcquireTokenAsync
【发布时间】:2016-07-20 15:29:35
【问题描述】:

我正在尝试使用 ADAL(Active Directory 身份验证库)在 WPF 应用程序中对我的用户进行身份验证。

我正在使用以下代码:

AuthenticationContext context = new AuthenticationContext("https://login.windows.net/<my_tenant>.onmicrosoft.com");
AuthenticationResult result = await context.AcquireTokenAsync("https://graph.windows.net/", "<client_id>",new Uri("<redirect_uri>");

AcquireTokenAsync 方法需要第三个参数:重定向 uri。

我了解此参数在 Web 应用程序中的用法。

但在 WPF 的情况下,我不明白要设置什么/如何使用它。

有什么想法吗?

【问题讨论】:

    标签: c# wpf office365 adal


    【解决方案1】:

    我们可以将其设置为 localhost,以便身份验证端点可以将身份验证代码重定向到客户端。它会使用授权码来请求令牌。

    这里有一个例子供你参考:

    AuthenticationContext context = new AuthenticationContext("https://login.microsoftonline.com/yourTenant/");
    AuthenticationResult result = await context.AcquireTokenAsync("https://graph.windows.net/", "{clientId}", new Uri("http://localhost"), new PlatformParameters(PromptBehavior.Auto));
    

    【讨论】:

    • 感谢您的回复。使用您的示例,身份验证提示窗口,但是当我键入我的帐户并验证时,出现以下错误:AADSTS50011:回复地址“localhost”与为应用程序配置的回复地址不匹配:
    • 您需要将http://localhost配置为您在Azure门户上注册的应用的回复地址。
    • @FeiXue-MSFT - 我遇到了类似的问题。当我将应用程序配置为使用 localhost 时,新的异常来自 ADAL:AADSTS70002: The request body must contain the following parameter: 'client_secret or client_assertion'。但是没有一种方法可以同时接受客户端密码和平台参数。你能帮忙吗?
    • 帖子中的代码用于publicnative客户端。您正在注册一个 Web 应用程序。请尝试注册一个新的本地客户端。
    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 2016-09-21
    • 2019-08-10
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多