繁体   English   中英

ADAL.NET Winforms应用程序

[英]ADAL.NET winforms application

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

在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请求,并且令牌已注入到请求中。

谢谢你们的帮助

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM