添加 Azure AD 连接服务会覆盖 AAD 门户中的重定向 URI

Adding Azure AD connected service overwrites Redirect URIs in AAD Portal

我已经在 Azure AD 中注册了一个应用程序 (aad.portal.azure.com)。 我想使用此应用程序注册使用 OpenIDConnect 对具有不同主机名的多个 Web 应用程序进行身份验证。我可以在门户中配置多个重定向 URI。

当我在 Visual Studio 2019 创建一个新项目并使用添加连接的服务向导时,它要求我指定是否创建一个新的 Azure AD 应用程序(我们的 AAD 管理员不允许这个选项但是我无论如何都不想这样做),或者使用现有 AAD 应用程序中的设置。

问题是无论我在此处指定什么重定向 URI,当我保存连接的服务配置时,visual studio 都会将该重定向 URI 写回到 AAD 门户并删除我已经在此处指定的任何重定向 URI。

我不想 visual studio 这样做。有什么办法可以抑制这种覆盖行为,也许是 visual studio 中的设置?否则,每次我创建新的 Visual studio 解决方案和 运行 向导时,我都需要重新创建以前存在的所有 URI。

如果有区别,项目类型是.net5 current mvc。

谢谢。

我没有找到关于此行为的官方文档,但它确实存在。

首先我们需要知道的是,虽然我们可以使用一个应用注册多个applications/projects,但不建议这样做。因为根据最小权限原则,我们应该给不同的应用赋予不同的权限,而不是给所有的应用赋予所有的权限。

Visual Studio添加连接服务功能默认遵循这个原则:一个应用注册一个应用。因此它会删除其他重定向 url 并将您指定的重定向放入应用程序注册中。

设置重定向有一个解决方法url,只需要您进行一些小的手动操作。

添加连接服务时将重定向URL留空。它将使用项目的 SSL URL(例如 https://localhost:44372/signin-oidc)作为您项目中的重定向 url,并且不会删除应用注册中的直接 url。

然后再次打开Add Connected Service,修改Redirect URL为你想要的,例如:https://localhost:47800/signin-oidc。之后,不要忘记手动将 https://localhost:47800/signin-oidc 添加到应用程序注册中。

与重新创建之前存在的所有 URI 相比,这将节省更多时间。

更新:

尝试直接在 launchUrlSettings.json 文件下的 launchUrl 中进行更改。请注意,真正的直接 url 是这个 launchUrl + CallbackPath(在 appsettings.json 文件下)。所以你也需要修改 CallbackPath 。这不会更新门户。