我有一个单独的 Angular 客户端,我想使用 Azure AD 对其进行身份验证。我正在使用ADAL JS所有这一切似乎都运作良好。我被重定向到 AD 登录页面,然后返回到我的应用程序。我可以看到 token 随着每个后续的 http 请求而传递。
但是,当我尝试向 Web API 发出安全请求时,我收到 401 未经授权错误。我大致遵循指南here用于设置。我之所以说宽松是因为我没有使用 MVC,我的客户端完全位于一个单独的代码库中。
我确信我的用户可以访问此应用程序。
我的身份验证配置内容如下所示:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(new WindowsAzureActiveDirectoryBearerAuthenticationOptions()
{
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = ConfigurationManager.AppSettings["AzureADAudience"],
},
Tenant = ConfigurationManager.AppSettings["AzureADTenant"],
AuthenticationType = "OAuth2Bearer"
});
受众:https://login.windows.net/xyz.onmicrosoft.com/myappname
租户:xyz.onmicrosoft.com
我要锁定的 Controller 是这样装饰的:
[HostAuthentication("OAuth2Bearer")]
[Authorize]
[RoutePrefix("Auth")]
最佳答案
您的 SPA 是否由您的后端托管?如果是这样,那么您需要将您的受众更改为客户端 ID。
ValidAudience = ConfigurationManager.AppSettings["ida:ClientID"]
关于c# - Azure AD 401 错误 - 从 Angular 客户端进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015446/