【问题标题】:Getting MsalServiceException: 'AADSTS501461 when trying to access a Web API from a console app using Msal尝试使用 Msal 从控制台应用程序访问 Web API 时出现 MsalServiceException:'AADSTS501461
【发布时间】:2020-05-10 03:41:25
【问题描述】:

我正在尝试使用应用注册清单中的 acceptMappedClaims=true 调用受 Azure AD 保护的 Web Api。我正在使用 ConfidentialClientApplication 从控制台应用程序调用。以下是错误信息。

Microsoft.Identity.Client.MsalServiceException: 'AADSTS501461: AcceptMappedClaims 仅支持与应用程序 GUID 匹配的令牌受众或租户已验证域内的受众。要么更改资源标识符,要么使用特定于应用程序的签名密钥。

【问题讨论】:

  • 我认为这个博客应该有助于解决这个问题securecloud.blog/category/aad/acceptmappedclaims
  • 已通过在清单的 identifierUris 中使用经过验证的域(如 myapi.{yourverifieddomain})解决了该问题。我使用的是 api://0274....................... 这是公开 api 时的默认设置。
  • @Jelard ,您是否必须在某处注册 myapi.{yourverifieddomain} ?以及如何首先验证 {yourverifieddomain}?即使我更新了要验证的域,我也遇到了同样的问题。
  • @soler 在 Azure AD 的自定义域选项卡下,有一个状态是否已验证。
  • @JelardMacalino,感谢您的意见。我终于解决了。这对我有用。在“应用注册”>“品牌”下,您需要确保发布者域已“验证”。然后,在公开 API 下,确保应用程序 ID URI 设置为 https://{发布者域}。我注意到的一件事是,如果您的应用程序发布者域是 XXXXX.onmicrosoft.com,只需将应用程序 ID URI 设置为 XXXXX.onmicrosoft.com 似乎也可以。如果您已经设置了应用程序 ID URI,您只需将其删除然后重新设置即可。

标签: azure-active-directory msal


【解决方案1】:

如果您打算使用未验证的基于域的标识符,那么您将收到您提供的错误。

下面是清单更改的example(AcceptMappedClaims,以及经过验证的域匹配 URI)

 "id": "901e4433-88a9-4f76-84ca-ddb4ceac8703",
    "acceptMappedClaims": true,
    "accessTokenAcceptedVersion": null,
    "addIns": [],
    "allowPublicClient": null,
    "appId": "9bcda514-7e6a-4702-9a0a-735dfdf248fd",
    "appRoles": [],
    "oauth2AllowUrlPathMatching": false,
    "createdDateTime": "2019-06-05T17:37:58Z",
    "groupMembershipClaims": null,
    "identifierUris": [
        "https://samajwt.dewi.red"
    ],

【讨论】:

  • 是否已验证基于域的标识符是那些在 Azure AD 中的自定义域下添加的域?
猜你喜欢
  • 1970-01-01
  • 2019-11-09
  • 2015-12-11
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多