ADAL.NET赢得了应用程序

时间:2015-06-30 14:20:25

标签: c# winforms azure adal

我有一个asp.net web api 2,它使用AAD(Azure AD)对用户进行身份验证。目前我只有一个访问api的角度Web应用程序。 adal.js正在处理用户的身份验证,这是有效的。现在我试图添加一个winforms应用程序,它也可以针对相同的AAD进行身份验证。这也有效,这意味着我获得了一个auth-token,但是当我调用它时,它会返回一条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请求,并且令牌被注入到请求中。

谢谢你们的帮助

1 个答案:

答案 0 :(得分:0)

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

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