Azure AD OBO 重新同意
Azure AD OBO Reconsent
我目前正在开发一个应用程序,其中包含一个向节点后端发出请求的前端 SPA。 Node 后端向 MS Graph 发出请求。对于这个用例,我设置了运行良好的 OBO 流程。
SPA 使用 MSAL.js 为具有 /.default
范围的中间层 API 请求令牌。中间层 API 在其清单中将客户端识别为 'knownclient'。在第一次登录时,应用程序希望用户同意来自客户端和中间层的组合范围。 (如果用户以前从未使用过该应用程序)
现在的问题如下:通过进一步开发过程,在中间层 API 为 MS Graph 添加了新的范围。但是,尽管在客户端中使用了 /.default
范围,但客户端并未向用户显示同意提示以表示他同意使用新的后端范围。
我采用的第一种方法是将 prompt='consent'
设置为前端的 MSAL 设置。这种方法有效,但每次登录时都会询问用户是否同意。
如果中间层 API 更改其范围,预期的行为将只是征求同意。
我必须如何设置我的应用程序才能获得此结果?
正如我在评论中所说,如果您只是添加新权限,请不要使用prompt='consent'
,因为这会导致您每次以用户身份登录时都会触发管理员同意页面。
添加新权限时,只需征得管理员同意即可,无需再次征求用户同意。因此,您只需在 Azure 门户中授予管理员同意即可。或者,使用管理员同意的url:https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}
.
我目前正在开发一个应用程序,其中包含一个向节点后端发出请求的前端 SPA。 Node 后端向 MS Graph 发出请求。对于这个用例,我设置了运行良好的 OBO 流程。
SPA 使用 MSAL.js 为具有 /.default
范围的中间层 API 请求令牌。中间层 API 在其清单中将客户端识别为 'knownclient'。在第一次登录时,应用程序希望用户同意来自客户端和中间层的组合范围。 (如果用户以前从未使用过该应用程序)
现在的问题如下:通过进一步开发过程,在中间层 API 为 MS Graph 添加了新的范围。但是,尽管在客户端中使用了 /.default
范围,但客户端并未向用户显示同意提示以表示他同意使用新的后端范围。
我采用的第一种方法是将 prompt='consent'
设置为前端的 MSAL 设置。这种方法有效,但每次登录时都会询问用户是否同意。
如果中间层 API 更改其范围,预期的行为将只是征求同意。
我必须如何设置我的应用程序才能获得此结果?
正如我在评论中所说,如果您只是添加新权限,请不要使用prompt='consent'
,因为这会导致您每次以用户身份登录时都会触发管理员同意页面。
添加新权限时,只需征得管理员同意即可,无需再次征求用户同意。因此,您只需在 Azure 门户中授予管理员同意即可。或者,使用管理员同意的url:https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}
.