【问题标题】:How can a SPA application (Angular5) access a separate WebAPI (under AzureAD)SPA 应用程序(Angular 5)如何访问单独的 WebAPI(在 Azure AD 下)
【发布时间】:2019-07-10 13:38:02
【问题描述】:

我们有

  • SPA 应用说,SPAApp1(Angular5 使用 ADAL 包)受 Azure AD 保护。
    注意:此解决方案没有 .NET 组件
  • WebAPI,比如受 AzureAD 保护的 WebAPI1 (.NET)。
  • 在 WebAPI1 中创建了一个名为 AllAccess 的作用域
  • 为 Azure 门户中的 AllAccess 范围授予 SPAApp1WebAPI1 的访问权限。

在登录 SPA 应用程序时,我们会获取用户的 ID_Token。

  1. 我们如何从 SPAApp1 调用 WebAPI1 并传递具有 合适的范围?
  2. 如何生成此令牌,可用于 从 SPAApp1 访问 WebAPI1?

据我所知,要访问资源,我们需要获取包含所需范围 aud(资源的)的访问令牌?我们如何在 SPAApp 中获取此访问令牌

【问题讨论】:

    标签: azure asp.net-web-api azure-active-directory single-page-application


    【解决方案1】:

    由于您使用的是 adal 包,因此您需要的是资源(而不是 msal 所需的范围参数)。资源的值应该是api://{your_webapi_clientId}

    您可以参考代码here获取访问令牌。

    【讨论】:

    • 我错过了在我的问题中添加我已授予 WebAPI 访问 Azure 门户中的 SPA 应用程序的权限。刚刚更新了问题。
    • 我想不通的一件事是 API 配置包含 API Clientid。那么当客户端 SPA 应用程序向 API 发送 IdToken(包含用户信息,以及 SPA 应用程序的 ClientId)时,API 如何接受这个令牌呢?此外,从 OpenIdConnect 的文档中阅读,我们似乎应该始终将 AccessToken 而不是 IdToken 发送到 API。那么我们如何在SPA中为API生成Access token并维护token
    猜你喜欢
    • 2015-04-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    相关资源
    最近更新 更多