AADSTS700016:在目录“some_another_id”中找不到标识符为“some_id”的应用程序

Posted

技术标签:

【中文标题】AADSTS700016:在目录“some_another_id”中找不到标识符为“some_id”的应用程序【英文标题】:AADSTS700016: Application with identifier 'some_id' was not found in the directory 'some_another_id' 【发布时间】:2019-12-10 23:20:41 【问题描述】:

我需要一个带有自定义策略的联合身份验证(当用户通过身份验证时,我需要他在 b2c 用户中显示为联合身份,而不是其他人或我可以通过单个租户实现的其他东西),我之前在默认策略设置中拥有它azure 作为 OpenId 提供者,但没有找到如何在自定义策略中使用 OpenId 进行联邦身份验证,所以我使用 SAML 并低于我所拥有的。

我试过单租户,但这不是我需要的。问题也不在于签名密钥,因为我已经遇到了这个问题并解决了这个问题。我创建了自签名证书,先将其上传到 AAD 应用程序,然后再上传到 b2c 策略密钥。 我认为验证联合身份的应用程序不是问题,因为我使用默认策略。

    <TechnicalProfile Id="Office-SAML2">
      <DisplayName>Microsoft Office 365</DisplayName>
      <Description>Login with your ADFS account</Description>
      <Protocol Name="SAML2"/>
      <Metadata>
        <Item Key="WantsSignedRequests">false</Item>
        <Item Key="PartnerEntity">https://login.microsoftonline.com/<b2c tenant id>/federationmetadata/2007-06/federationmetadata.xml</Item>
        <Item Key="XmlSignatureAlgorithm">Sha256</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_SamlCert"/>
        <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SamlCert"/>
      </CryptographicKeys>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userPrincipalName" />
        <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
        <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
        <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="https://sts.windows.net/<b2c tenant id>/" AlwaysUseDefaultValue="true" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
        <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
        <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
        <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
      </OutputClaimsTransformations>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop"/>
    </TechnicalProfile>

我一直在通过这个参考做所有事情 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-custom-setup-adfs2016-idp

【问题讨论】:

【参考方案1】:

我遇到了这个问题,因为我使用的是客户端密码部分中的 ID,而不是使用 Application (client) ID

【讨论】:

谢谢,你节省了我的时间,我犯了同样的错误,我使用证书中的 ID 列。 感谢您拯救了我的一天。 谢谢! (以防万一:您需要使用十六进制 id 而不是应用名称)【参考方案2】:

我遇到这个错误的可能性如下:

此错误表示您在代码中配置客户端ID或租户ID时出错,首先请确认两者与您的Azure门户应用程序客户端和租户相同。

就我而言,我在代码中输入了错误的客户 ID。

请查看https://github.com/MicrosoftDocs/azure-docs/issues/24673

【讨论】:

【参考方案3】:

这里的问题是 AAD 应用程序注册的标识符 URI 与身份验证请求中请求的标识符不匹配。您可以通过以下方式解决此问题:

    复制隐藏屏幕截图中的 URL 导航到要与之联合的 Azure AD 租户中的 Azure AD 刀片 3. 访问企业应用程序菜单,通过 ApplicationId(ClientId) 找到应用程序注册 打开Single Sign-On 菜单。 将错误中的 URL 粘贴到 Identifier (Entity ID) 选项中

您还需要正确的Reply URL:https://contoso.b2clogin.com/te/contoso.onmicrosoft.com/&lt;policyd of Base&gt;/samlp/sso/assertionconsumer

您最好使用 OpenId(它还允许多租户访问):https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom

【讨论】:

【参考方案4】:

对我来说,问题是我的基本 SAML 配置菜单中的应用程序标识符(实体 ID)与应用程序提供商声明的不匹配。

【讨论】:

以上是关于AADSTS700016:在目录“some_another_id”中找不到标识符为“some_id”的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

“AADSTS50034:要登录此应用程序,必须将帐户添加到 <GUID> 目录

AADSTS70002:验证凭据时出错。 AADSTS50126:用户名或密码无效

错误:AADSTS500011:在租户中找不到名为“URL”的资源主体

Azure AD:收到AADSTS50011错误

AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:'**********-*****-*****-**** *****'

AADSTS50020:我们无法从此 api 版本为 Microsoft 帐户颁发令牌