登录我的Azure网站时,“使用特定于租户的终结点或将应用程序配置为多租户”

Dha*_*tle 7 azure azure-web-sites azure-active-directory

登录到Azure网站后出现此错误:

AADSTS50194:应用程序“ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx”未配置为多租户应用程序。在'10 / 15/2018'之后创建的此类应用程序不支持使用/ common端点。使用特定于租户的终结点或将应用程序配置为多租户。

Cor*_*te5 52

如果您是 Azure 管理员收到此消息,则可能是由于错误消息中列出的确切原因 - 您无法使用commonAPI 端点来 MSFT 登录到特定于租户的应用程序。

就我而言,我正在使用示例代码配置应用程序注册 - 需要使用新端点修改示例代码。即以下行:

let kAuthority = "https://login.microsoftonline.com/common"

需要改为:

let kAuthority = "https://login.microsoftonline.com/MY_TENANT_NAME"

可以通过在 Azure 搜索栏中键入“租户状态”来获取 Azure 组织的租户名称。


Xamarin:上述说明适用于 MSAL iOS - 对于 Xamarin MSAL Android/iOS,没有直接方法可以在主调用中设置权限。它需要链接到交互式登录调用。

例如,这里的示例代码:

authResult = await App.PCA.AcquireTokenInteractive(App.Scopes)
                      .WithParentActivityOrWindow(App.ParentWindow)
                      .ExecuteAsync();
Run Code Online (Sandbox Code Playgroud)

需要改成这样:

authResult = await App.PCA.AcquireTokenInteractive(App.Scopes)
                      .WithAuthority("https://login.microsoftonline.com/YOUR_TENANT_NAME")
                      .WithParentActivityOrWindow(App.ParentWindow)
                      .ExecuteAsync();
Run Code Online (Sandbox Code Playgroud)

  • 刚才(2021 年 2 月)这个答案对我有帮助,只要我将“YOUR_TENANT_NAME”替换为 Azure 控制台当前标记的“租户 ID”即可。换句话说,“租户名称”是一个特定的字符串,“租户 ID”是一个不同的字符串,而放入权限 URI(在我的例子中)中的字符串是“租户 ID”。它看起来像:“xxedxxxx-xxxd-xxxx-xxxx-07bdxbxxxxc4x” (14认同)

Dha*_*tle 10

原来我的帐户实际上不在Azure AD上,因此我需要在portal.azure.com上的“支持的帐户类型”下检查“任何组织目录中的帐户”

具体来说:portal.azure.com> Azure Active Directory>应用程序注册(预览)>您的应用程序>身份验证>支持的帐户类型>任何组织目录中的帐户


Sat*_*hia 10

在 azure 中使用以下选项启用多租户。

portal.azure.com -> Azure Active Directory -> 应用注册 -> 选择你的应用 -> 身份验证 -> 支持的帐户类型 -> 任何组织目录中的帐户(任何 Azure AD 目录 - 多租户)

当您希望允许公共用户时,应启用功能

在此处输入图片说明

如果您想将用户授权到组织级别(私人用户)。使用以下选项。

let authUrl = "https://login.microsoftonline.com/common"
Run Code Online (Sandbox Code Playgroud)

更改如下:

let authUrl= "https://login.microsoftonline.com/MY_TENANT_NAME"
Run Code Online (Sandbox Code Playgroud)

  • 但任何拥有组织帐户的人都可以使用此应用程序。如果您计划仅为公司用户部署应用程序,这不是最佳选择。 (4认同)

小智 9

如此处所述,如果您使用的应用程序具有Microsoft.AspNetCore.Authentication.MicrosoftAccount,Microsoft 帐户 OAuth 提供程序默认使用公共终结点:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
Run Code Online (Sandbox Code Playgroud)

假定这是一个多租户应用程序,并且具有“任何组织目录中的帐户”权限级别。

如果您想要单个租户应用程序,则必须在以下位置指定授权和令牌端点Startup.cs

services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
    microsoftOptions.AuthorizationEndpoint = "https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/authorize";
    microsoftOptions.TokenEndpoint = "https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token";
    microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
    microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
});
Run Code Online (Sandbox Code Playgroud)

端点的 URL 可以在 Azure 上的应用程序注册概述页面的端点选项卡中找到,OAuth 2.0 授权端点和令牌端点的 URL 中已包含您的租户 ID。

关于 的文档MicrosoftAccountOptions


Chi*_*gyB 7

由于某种原因YOUR_TENANT_NAME似乎对我不起作用。它对其他人有效,因此您仍然应该尝试一下。

以下解决方案对我有用,而不是上述解决方案:

authority: "https://login.microsoftonline.com/Your_Tenant_ID"
Run Code Online (Sandbox Code Playgroud)

您可以Your_Tenant_ID通过在 Azure 搜索栏中键入租户属性来查找。