【问题标题】:Asp.Net Core Web APi and Azure AD authAsp.Net Core Web APi 和 Azure AD 身份验证
【发布时间】:2020-07-27 11:24:15
【问题描述】:

我必须创建一个具有这些要求的网络应用程序:

  • SPA(角度 9)
  • SPA 调用 Web API (Asp.net core 3.1)
  • 我必须使用 Azure AD 身份验证(我创建了租户)
  • 我必须使用 Microsoft Graph API

我阅读了不同的指南并研究了链接中的示例 azure ad auth samples 但它们不满足我的要求。 我阅读了使用桌面应用程序的本指南a web api that calls a web api,但在更改代码后,我收到了 401 未经授权的错误。

谁能帮帮我?

附: : 由于不合适的例子,我目前没有可执行代码

非常感谢

【问题讨论】:

  • 据我了解,您的 Web API 受 Azure AD 保护,您的 Web API 将调用 Microsoft graph。对吗?
  • 是的,它是正确的,现在我可以从 Angular 应用程序中获取带有 MSAL 的访问令牌,然后我调用我的 web api 并收到错误 500。这是错误
  • 发送请求时出错。\r\n\r\n ---> System.ArgumentNullException: 值不能为空。 (参数“accountIdentifier”)\r\n 在 Microsoft.Identity.Web.TokenAcquisition.GetAccessTokenOnBehalfOfUserFromCacheAsync(IConfidentialClientApplication 应用程序,字符串 accountIdentifier,IEnumerable1 scopes, String loginHint, String tenant)\r\n at Microsoft.Identity.Web.TokenAcquisition.GetAccessTokenOnBehalfOfUserFromCacheAsync(IConfidentialClientApplication application, ClaimsPrincipal claimsPrincipal, IEnumerable1 范围,字符串租户)\r\n 在
  • 嗨@Salvo12,我有同样的要求。你找到解决方案了吗?
  • @shyambabu 我有一个示例项目,其中 Angular SPA 和 ASP.Net Web API 在使用 Azure AD 进行身份验证后协同工作(并且 Angular 分别调用 Graph API)。如果您想从 Web API 调用 Graph API,您可以使用 Nan Yu 提到的“代表”流程。 github.com/superman-lopez/AzureAd_AspNet_Angular

标签: angular asp.net-core azure-active-directory microsoft-graph-api asp.net-core-webapi


【解决方案1】:

您可以查看MSAL For Angular document 了解如何验证用户并获取访问令牌。 this code sample 用于 Angular 9 。

如果你想在Angular应用程序中直接调用Microsfot Graph,你可以直接获取Microsoft Graph的范围,如文档所示,MSAL将帮助获取Microsoft Graph的访问令牌。如果您想从 web api 应用程序调用 Microsoft Graph,传播委托的用户身份和权限,您可以使用OAuth 2.0 On-Behalf-Of flow 并按照您显示的代码示例,并使用 fiddler 或开发人员工具来跟踪请求并解决 401 问题.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2019-12-13
    • 2018-03-12
    相关资源
    最近更新 更多