It turns out that my account was not actually on Azure AD, so I needed to check "Accounts in any organizational directory" under "Supported account types" on portal.azure.com Specifically: portal.azure.com > Azure Active Directory > App registrations (preview) > Your App > Authentication > Supported account types > Accounts in any organizational directory
var builder = PublicClientApplicationBuilder.Create(OAuthSettings.ApplicationId)**.WithAuthority("https://login.microsoftonline.com/YOUR_TENANT_NAME");**
8条答案
按热度按时间cwdobuhd1#
如果您是收到此消息的Azure管理员,则可能是由于错误消息中列出的确切原因-您无法使用
common
API端点来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,没有直接的方法在主调用中设置权限,它需要链接到交互式登录调用。
例如,下面的示例代码:
需要更改为:
u1ehiz5o2#
It turns out that my account was not actually on Azure AD, so I needed to check "Accounts in any organizational directory" under "Supported account types" on portal.azure.com
Specifically: portal.azure.com > Azure Active Directory > App registrations (preview) > Your App > Authentication > Supported account types > Accounts in any organizational directory
wlwcrazw3#
由于某些原因,
YOUR_TENANT_NAME
似乎对我不起作用。它对其他人起作用了,所以你还是应该试试。代替上面的解决方案,下面的工作对我来说:
您可以通过在Azure搜索栏中键入Tenant Properties来查找
Your_Tenant_ID
。von4xj4u4#
更进一步到@Coruscate5的帖子,这对我有帮助,你可以为iOS设置
WithAuthority
,如下所示。如果您遵循Build Xamarin apps with Microsoft Graph指南,并且没有对多租户应用程序进行身份验证,那么这一点非常重要。
以下是获取租户名称的方法:
ia2d9nvy5#
如here所述,如果您使用的是带有
Microsoft.AspNetCore.Authentication.MicrosoftAccount
的应用,Microsoft帐户OAuth提供程序的默认设置将使用一个公共端点:假设这是一个 * 多租户 * 应用程序,并具有“任何组织目录中的帐户”权限级别。
如果您需要单租户应用,则必须在
Startup.cs
中指定授权和令牌端点:终结点的URL可在Azure上 * 应用注册 * 概述页面的 * 终结点 * 选项卡中找到,OAuth 2.0授权终结点和令牌终结点的URL中已包含您的租户ID。
Documentation on the
MicrosoftAccountOptions
.njthzxwz6#
我在这里偶然发现了同样的错误,但是使用了python来验证我的API调用。
具体来说,我使用的是bingads中的authOAuthDesktopMobileAuthCodeGrant类。
authOAuthDesktopMobileAuthCodeGrant的init显示以下内容,请注意,租户属性默认为“common”。
因此,为了不像上面强调的那样默认为/common,我不得不在这里将这个租户组件设置为我的应用的租户ID
希望这对其他使用Python的人有用。
aiqt4smr7#
在我的例子中,在教程的msal_config. json中添加tenant_id确实有效:
nimxete28#
将
authority
字段添加到客户端的身份验证配置中。authority
字段需要设置为:<tenant id>
替换为您的租户ID;例如:https://login.microsoftonline.com/f1c6ef1a-4230-4db1-a5e7-67c20e92d0d6
Javascript示例
对于Javascript应用,有@azure/msal-browser官方包。注意,您需要在
config.auth
对象中提供authority
字段,如下所示:PS-其余的代码请查看this MSDN tutorial,它显示了如何登录到单页面应用程序的代码