[英]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.