【问题标题】:ADAL.NET winforms applicationADAL.NET winforms 应用程序
【发布时间】:2017-03-02 21:27:48
【问题描述】:

我有一个 asp.net web api 2,它使用 AAD(Azure AD) 对用户进行身份验证。目前我只有一个有角度的 web 应用程序访问 api。用户的身份验证由 adal.js 处理,这是可行的。现在我正在尝试添加一个 winforms 应用程序,该应用程序也针对同一个 AAD 进行身份验证。这也有效,这意味着我得到了一个身份验证令牌,但是当我调用 API 时它返回一个 401 消息。我查看了Azure AD samples at github 并将我的代码基于它们。

在 web api 中,我在 Startup.Auth.cs 中有以下代码:

    app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Audience = ConfigurationManager.AppSettings["ida:Audience"],
                Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
            });

从 Azure AD 复制受众和租户密钥。

我在 Winforms 应用程序中使用以下代码:

    string authority = "https://login.microsoftonline.com/{TenantID}";
    string resourceURI = "APP ID URI from the Web API registered in Azure AD";
    string clientID = "Client ID from the WinForms Application registered in Azure AD";
    Uri returnUri = new Uri("Registered return uri");
    AuthenticationContext _ac = new AuthenticationContext(authority);
    AuthenticationResult _arr = _ac.AcquireToken(resourceURI, clientID, returnUri);

回顾一下,我可以在 winforms 应用程序中对用户进行身份验证,但是当我从 API 请求数据时,api 会以 401 错误响应。我已经检查了 http 请求,并且令牌正在被注入到请求中。

谢谢大家的帮助

【问题讨论】:

  • 您是否在浏览器中创建了一个 cookie 作为身份验证的结果?我假设您的 API 具有可能会启动 401 的 [Auhorize] 属性。
  • 你能提供一个 fiddler 跟踪来捕获对 api 的请求吗?
  • 是的,API 端点具有 [Authorize] 属性,您能否详细说明您在 Fiddler 跟踪中的确切需求。因为在跟踪中,Fiddler 中的原始请求是相同的,除了 Auth 令牌。通过 ADALJS 收到的与从 ADAL.net 收到的不同
  • Fiddler 跟踪捕获使用 Adal.Net 进行身份验证的请求以及随后使用身份验证令牌对 api 的请求。
  • @ezile 我知道你发表评论已经有一段时间了,但我们解决了这个问题。这是由于我们的配置,在 api 上我们使用 GUID 进行配置,在 WFA 上我们使用了我们认为它们可以互换的 URL,但它们不是,谢谢您的帮助

标签: c# winforms azure adal


【解决方案1】:

您是否确保将这两个应用程序(Web API 和 WinForm 应用程序)与 AAD 应用程序相关联,并且您已授予 WinForm 应用程序访问 Web API 的权限?

https://github.com/Azure-Samples/active-directory-dotnet-native-multitarget 提供了一个很好的例子。

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多