Azure Active Directory 使用错误的应用程序客户端 ID

Azure Active Directory using wrong Application Client ID

我开发了一个 Azure Web 应用程序,它在我的订阅上使用 Azure Active Directory 进行身份验证,但我现在正尝试从我的测试 AAD 目录切换到我想在另一个订阅上使用的实际 AAD。我收到以下错误:

AADSTS50020: User account 'MyAccount' from external identity provider 'https://sts.windows.net/a26def89-f7e6-4496-b4cb-7ffee9ddbabf/' is not supported for application '025ef17e-9767-4f4e-a1b1-6218491d94ed'. The account needs to be added as an external user in the tenant. Please sign out and sign in again with an Azure Active Directory user account.

租户 ID 正确,但应用程序客户端 ID 不是我在应用程序设置中输入的,甚至不是我用于此部署的正确客户端 ID。我在我的 Azure Active Directory 帐户下添加了两个不同的应用程序,这个客户端 ID 属于不同的应用程序。我不明白该网站是从哪里获取的。在搜索我的解决方案后,我发现它嵌入到 Web 部署中用于不同的发布配置文件,而不是我一直发布的配置文件。我注释掉了这个引用并在发布时取消选中启用组织身份验证以查看这是否会改变任何东西并且它没有。

我正在使用 Visual Studio 2015 在您创建新的 MVC 应用程序时创建的标准 AAD 代码,并检查是否使用提供以下 AppSettings 的工作或学校帐户:

<add key="ida:ClientId" value="6b0dde38-55e6-4801-ba14-58708ecb5c06" />
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
<add key="ida:Domain" value="new.domain.imtryingtouse" />
<add key="ida:TenantId" value="a26def89-f7e6-4496-b4cb-7ffee9ddbabf" />
<add key="ida:PostLogoutRedirectUri" value="mysite.azurewebsites.net" />

我已经通过 FTP 验证 AppSettings 中正确的 ClientId 在我的 web.config 服务器上,但它不是该错误消息中使用的那个。

如有任何帮助,我们将不胜感激。请谢谢。

我是 Microsoft Web 工具扩展小组的一名 PM,负责构建 Azure 工具。我在这里有几个关于你的复制品的问题。执行发布体验时,是否指定了要使用的目标客户端 ID?我了解您正在针对 AAD App #1 进行开发,但您希望您的应用在发布后使​​用 AAD App #2。您是否在发布期间提供目标​​ AAD 应用程序的客户端 ID?如果是,它应该将您正在开发的客户 ID 替换为您想要 运行 反对的客户 ID。

另外,请问您使用的是哪个版本的VS,安装的是哪个版本的Azure SDK?这将有助于解决此问题。它还有助于了解您使用的是 DreamSpark 还是 CSP Azure 订阅,或者您的订阅是您通过免费试用自行设置的,然后是现收现付或 MSDN 订阅。一些订阅具有多种服务可用性,因此了解您是否愿意共享这些信息会很有帮助。

如果您更愿意通过电子邮件而不是在 SO 上讨论这个问题,我们也可以提供便利。无论哪种方式,如果这需要客户更新 VS,或者如果我们有需要在以后的版本中解决的问题,我将 post 提出解决方案或行动计划。

感谢您提供该信息,我们会解决这个问题并让您畅通无阻。

我的一位客户也有类似的设置。到目前为止,VS2015 中 "Build" 菜单中的 运行 "Clean Solution" 已经为我解决了这个问题。

感谢 brady gaster,我被指向了通过右键单击项目访问的配置 Azure AD 身份验证选项。通过这个向导然后发布它能够正确设置身份验证。我不确定这与在 web.config 中更改应用程序设置有何不同,但它确实有效。