你有一个单页应用程序 (SPA),它调用 Azure App Service Web API (API A)。API A 必须代表已登录用户调用下游 API (API B),并在 API B 中强制执行用户的权限。API B 已在其应用注册中公开了作用域。你需要保留用户身份,同时调用 API B 并避免授予 API A 广泛的应用程序权限。你应该执行哪两项操作?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 在 API A 中,使用 MSAL 通过调用 AcquireTokenOnBehalfOf,将传入的 bearer token 作为 UserAssertion,来交换入站用户令牌以获取下游令牌,并将该令牌发送到 API B。, 在 Azure AD 中,将 API B 作为委托权限添加到 API A 的应用注册中,并为所需的作用域授予管理员同意。.
为什么这是答案
第一个正确选项描述了代表用户(OBO)流,这是在多层应用程序中保留用户身份的关键。API A 接收用户的令牌,然后使用 MSAL 的 AcquireTokenOnBehalfOf 方法,将此令牌作为 UserAssertion 交换为访问 API B 的新令牌。这确保了 API B 知道是哪个用户在请求资源,并可以根据该用户的权限进行授权。 第二个正确选项是在 Azure AD 中配置 OBO 流的必要步骤。API A 需要被授权代表用户调用 API B 的特定作用域。将 API B 添加为 API A 的委托权限,并授予管理员同意,允许 API A 代表用户请求这些权限。 更改 API A 以使用客户端凭据流是错误的,因为它会导致 API A 以其自己的身份调用 API B,从而丢失了原始用户的身份和权限上下文。将 API B 配置为需要应用程序角色而不是作用域是错误的,因为 OBO 流依赖于作用域来表示用户在下游 API 中的权限,并且直接转发用户令牌而不获取新的下游令牌将无法通过 API B 的授权。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡