开发阶段无需发布者批准:Azure Active Directory多租户企业应用登录权限同意及跨目录授权方法
嘿,针对你在开发多租户Azure AD企业应用时遇到的这些问题,我给你梳理几个在开发/原型阶段不用等发布者审批就能搞定的方案:
先确认核心前提:你的应用必须是多租户类型
首先得检查应用B的注册设置——在Azure门户的应用注册→概述→基本信息里,确保「支持的账户类型」选的是任何组织目录中的账户(任何Azure AD目录 - 多租户)。如果是单租户模式,其他租户根本搜不到也没法访问,这是基础中的基础。
方法1:构造管理员同意URL,一键完成授权
这是开发阶段最快的方式,不需要把应用放到公共应用库,直接让租户A的管理员通过专属URL完成授权:
- 按照这个格式构造URL,替换掉括号里的参数:
参数说明:https://login.microsoftonline.com/{租户A的ID或域名}/adminconsent?client_id={应用B的客户端ID}&redirect_uri={应用B的重定向URI}&state=12345{租户A的ID或域名}:填租户A的目录ID(一串UUID)或者租户的官方域名(比如contoso.com){应用B的客户端ID}:在应用B的「应用注册」→「概述」里能找到的客户端ID{应用B的重定向URI}:必须和应用B注册时配置的重定向URI完全一致(比如https://your-dev-app.com/callback)
- 让租户A的全局管理员、应用程序管理员或者云应用程序管理员打开这个URL,跟着提示点击同意即可。授权完成后,租户A的用户就能登录应用B,而且应用会自动出现在租户A的企业应用列表里。
方法2:用PowerShell手动把应用导入到租户A
如果需要在租户A的Azure门户里直接看到这个应用,也可以用PowerShell命令手动导入服务主体:
- 先安装AzureAD模块并连接到租户A:
Install-Module -Name AzureAD -Force Connect-AzureAD -TenantId {租户A的ID} - 然后导入应用B的服务主体:
执行完命令后,应用B就会出现在租户A的企业应用列表中,之后管理员可以在租户A这边直接配置权限、分配用户组等操作。New-AzureADServicePrincipal -AppId {应用B的客户端ID}
关于「之前能通过UUID添加现在不行」的原因
你提到之前通过搜索UUID添加过企业应用,现在失效大概率是这两个原因:
- 应用B的注册被改成了单租户模式,导致跨租户不可见;
- 按照Azure 2020年11月的规则调整,未经过发布者验证的应用不再公开显示在应用库搜索结果里,所以只能通过手动同意URL或PowerShell的方式添加。
额外提醒
- 管理员同意是租户级别的,一旦完成,租户A里的所有用户(或者你指定的用户/组)都能直接登录,不需要逐个用户同意;
- 开发阶段建议用测试租户验证,别碰生产环境;
- 等发布者审批通过后,你可以把应用发布到Azure AD应用库,届时其他租户的管理员就能直接搜索添加了。
内容的提问来源于stack exchange,提问作者Manuel
相关产品推荐
相关产品推荐

