【问题标题】:Get AngularJS to talk to .NET Web API secured with Azure AD让 AngularJS 与受 Azure AD 保护的 .NET Web API 对话
【发布时间】:2014-10-29 19:37:42
【问题描述】:

我在 Microsoft Azure 上有两个不同的 Web 项目。一个项目是 .NET MVC Web 应用程序,另一个项目是 .NET Web API。

这两个项目都配置为使用 Azure AD。 MVC Web 应用程序能够获取令牌并使用它向 Web API 发出请求。这是来自 MVC Web 应用程序的示例代码。

string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID));
ClientCredential credential = new ClientCredential(clientId, appKey);
result = authContext.AcquireTokenSilent(todoListResourceId, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));

// Make a call against the Web Api
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, webApiBaseAddress + "/api/list");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
HttpResponseMessage response = await client.SendAsync(request);

所以这段代码工作得很好。但是,我现在需要做的是直接从 AngularJS 应用程序调用 Web API。当我尝试这样做时,我收到 401 未经授权的错误。

我这样做的方法是在 AngularJS 发送的 HTTP GET 请求中添加一个标头。我将“Bearer”设置为我从 MVC 应用程序(上面的代码)传递给页面的结果。AccessToken 值。

显然这不起作用。我想现在我的问题是我的选择是什么?有没有官方或更好的方法来做到这一点?假设我想从标准 JavaScript 调用 Web API(让我们忘记 AngularJS 的复杂性)。有没有办法通过 Azure AD 进行身份验证?

【问题讨论】:

    标签: asp.net asp.net-mvc angularjs asp.net-mvc-4 azure


    【解决方案1】:

    为浏览器内 JS 应用程序获取令牌的规范方法是使用 OAuth2 隐式流。 Azure AD 当前不公开该流程,但请继续关注:我们正在努力启用该方案。还没有可以分享的日期。

    HTH! 五、

    【讨论】:

      【解决方案2】:

      我在旧答案中提到的工作终于进入了预览阶段。请查看http://www.cloudidentity.com/blog/2014/10/28/adal-javascript-and-angularjs-deep-dive/ - 这应该可以准确解决您描述的场景。如果您对图书馆有任何反馈,请告诉我们! 谢谢 五、

      【讨论】:

      • 这看起来真的很棒!知道什么时候会发布第一个版本吗?我们期待尽快在生产网站之一上使用它。我的意思是从现在开始几周或几个月?
      • 嗨 EpisodeX,目前很难确定具体时间。如果您向我们发送有关您的方案的更多详细信息,我们可以查看是否有任何我们可以建议的解决方案。您可以通过cloudidentity.com/blog/contact 与我联系 - 谢谢!
      • 您好,感谢您的快速回复!我们决定在当前阶段试一试,并跟上可能发生的任何重大变化。实际上,该场景非常简单,因此我希望按照您在答案中链接的博客文章将足以使其正常工作。那么我希望我能就它的进展给你一些反馈。
      猜你喜欢
      • 2020-02-19
      • 2017-11-02
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2017-02-10
      相关资源
      最近更新 更多