c# - Azure AD 401 错误 - 从 Angular 客户端进行身份验证

标签 c# .net angularjs azure azure-active-directory

我有一个单独的 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/

相关文章:

javascript - 注入(inject)gridster时模块出错

c# - 从异步方法立即抛出

c# - ASP.NET MVC 下拉列表

c# - 动态 Linq 查询包含列表

c# - 正则表达式切割字符串中的数字c#

c# - 以 WebBrowser 窗体(Windows 窗体 C#)完全加载页面时的 DocumentCompleted 事件

javascript - 从父指令或 Controller 中的指令名称数组呈现 AngularJS 指令

c# - 使用 API 3.0 获取 YouTube 视频的评论或点赞数

c# - 如何使用 NLog 输出 "console.write"样式的输出(无换行符)?

javascript - 通过 ng-repeat 的 Angular 多重过滤器