如何在 Azure Active Directory 中制作 Native Client Application 单租户?

Posted

技术标签:

【中文标题】如何在 Azure Active Directory 中制作 Native Client Application 单租户?【英文标题】:How to make Native Client Application single tenant in Azure Active Directory? 【发布时间】:2015-11-27 23:47:44 【问题描述】:

我在 Azure Active Directory 中创建了一个本机客户端应用程序,开发了一个 Xamarin android 应用程序并使用 ADAL 库我可以使用任何 Microsoft 电子邮件帐户登录 myapp...但我只想选择我自己的域(我有office365订阅)。

Web 应用程序或 Web api 有一个选择单租户或多租户的复选框,但我在本机客户端应用程序中找不到。

我已尝试下载清单

将“availableToOtherTenants”更改为 false 将“knownClientApplications”更改为我的 clientId 在重定向 url 中使用 https 和 http 尝试了几乎所有有意义或没有意义的方法

但没有任何反应,我仍然可以使用任何 Microsoft 帐户登录我的应用。

我应该在收到登录电子邮件后在我的应用程序中进行限制吗??...我认为这很糟糕。

更多信息...

我已经设法做到了以下几点:

将 MANIFEST“availableToOtherTenants”更改为“true” 将 MANIFEST “knownClientApplications”更改为我的 ClientId 使用授权url调用api:“https://login.windows.net/common”(不是我的租户ID)

结果:

我只能使用我的域登录,但任何其他 Microsoft 帐户都会从 ADAL 库中引发未处理的异常(与用户取消登录时的未处理异常相同)

【问题讨论】:

【参考方案1】:

Azure 广告中的所有原生客户端都自动成为多租户。但是,您可以使用您自己的租户(例如)的权限初始化您的 AuthenticationContext,并且只有您自己的用户才能使用它获得令牌。在您的 Web API 上,您必须检查用户是否仅来自该租户,但如果您在中间件初始化中指定租户而不是 common。

【讨论】:

我尝试在授权 URL 中将“common”更改为“”,但与 Web api 不同,我仍然可以使用任何 Microsoft 帐户登录 使用“我可以登录”意味着用户可以输入他们的凭据,但您不会取回令牌,对吧? 用户输入他们的凭据,我确实取回了令牌 这些用户是您租户中的来宾,还是随机的 MSA 用户?如果是前者,那是设计使然:这些用户与本地用户一样多。如果是后者,那听起来不对。您能否使用生成的令牌成功调用 API? 不,不是客人......随机用户,是的,这听起来不对,但我能够读取登录用户的个人资料,如名字,姓氏,唯一ID,..(我没有'实际上不要试图获取更多信息)

以上是关于如何在 Azure Active Directory 中制作 Native Client Application 单租户?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Azure Active Directory 检索用户信息

如何在 Azure Active Directory 中制作 Native Client Application 单租户?

访问Azure Active Directory用户和角色

来宾用户如何在 Azure Active Directory 中重置其 MS Authenticator MFA 设置?

Azure Active Directory 如何支持将 Okta 作为 IDP 进行联合?

如何在登录时在 JWT 令牌中从 Azure Active Directory 传递自定义扩展属性?