如何取消Azure应用注册间的用户授权请求?
解决Azure AD客户端应用无需用户授权的配置问题
检查权限类型与管理员同意状态
- 确认reg2获取的reg1作用域类型:如果是委派权限,即使用户在授权客户端列表中,首次访问仍会触发用户授权,除非全局管理员或特权角色用户对reg2的权限执行管理员同意。只有应用权限(针对后台服务场景)才完全不需要用户交互。
- 执行管理员同意:在Azure门户进入reg2的应用注册页面,打开「API权限」选项卡,点击「授予管理员同意」,完成后用户端将不再弹出授权请求。
验证授权客户端列表配置
- 核对reg1的「公开API」->「授权客户端应用」列表:确保reg2的客户端ID已正确添加,且对应3个作用域的勾选框已选中。仅添加客户端ID但未勾选作用域会导致配置不生效。
- 确认reg1的作用域状态:进入reg1的「公开API」->「添加作用域」页面,确保每个作用域的状态为已启用。
调整Blazor Server客户端认证配置
在Blazor Server的Program.cs中,配置MSAL客户端时明确指定作用域并禁用授权提示:
builder.Services.AddMsalAuthentication(options => { builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication); // 明确添加reg1的作用域 options.ProviderOptions.DefaultAccessTokenScopes.Add("api://{reg1-client-id}/scope1"); options.ProviderOptions.DefaultAccessTokenScopes.Add("api://{reg1-client-id}/scope2"); options.ProviderOptions.DefaultAccessTokenScopes.Add("api://{reg1-client-id}/scope3"); // 禁止弹出授权提示 options.ProviderOptions.Prompt = "none"; });
注意:
Prompt.None会直接尝试获取令牌,必须确保管理员已完成权限同意操作,否则会返回认证错误。
检查租户用户同意设置
进入Azure AD租户的「企业应用程序」->「用户设置」:
- 如果设置为「不允许用户同意任何应用程序」,需确保管理员已对reg2的权限完成同意;
- 如果设置为「允许用户同意由管理员预先批准的应用程序」,需将reg2添加到「预先批准的应用程序」列表中。
内容的提问来源于stack exchange,提问作者AmineDZ
相关产品推荐
相关产品推荐

