1. 简单介绍
当前微软已经强制用户试用MFA(Multi-Factor Authentication)方式去登录Azure portal以及Microsoft 365 admin center等平台。配置了MFA后一段时间,发现自己使用的一些Power Automate flows出现了一些报错,比如下面这个flow,本人打算访问Power BI rest API去获取特定dataset的刷新历史记录,在调用Power BI Rest API之前需要得到一个access token,结果出现了与MFA有关的报错。

Get Access Token Action配置如下,试用的grant type是 password的方式,

具体的错误信息如下所示,可以看出和MFA确实有关联,

Error description如下,
AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access '00000009-0000-0000-c000-000000000000
下面记录一下本人采用的解决方法,
2.具体说明
由于在获取access token的时候,本人使用了grant type是password的方式,使用的username刚好是在MFA相关的Microsoft Extra Conditional Access policy影响范围的。


note, 可以点击Conditional Access 链接进入到条件访问界面进行policy的查看和配置。
2.1 解决方法
找到一个没有受到MFA影响的Microsoft Extra ID User或者配置Conditional Access policy将某个user排除MFA的影响。
2.1.1 配置条件访问策略
如下步骤为更改现有的MFA policy将特定user排除
- 访问Conditional Access policy的页面,点击特定的policy,

- 在policy的配置界面中,点击 Users or agents (Preview) section,在弹出的右侧面板中,选择Exclude->Users and groups,然后添加特定的用户即可,

2.1.2 修改Power Automate
修改报错的Power Automate flow,将用来获取access token的username配置为特定的user(已经被MFA policy排除),最后保存flow。

2.1.3 测试Flow
运行flow,发现又能正常获取到access token了,如下所示,

返回到的Fabric dataset refresh history如下图所示,

2.1.4 其他
2.1.4.1 权限分配
用来获取access token的特定用户帐户需要配置一下权限,如下图所示,
- 在Microsoft Fabric workspace中,点击特定semantic model的...上下文菜单,然后点击Manage permissions选项,

- 在出现的权限分配界面中,点击Add user按钮,

- 在弹出的Grant people access窗口中,输入用户的email,然后点击Grant access按钮,如下图所示,

- 最后权限添加成功,

2.1.4.2 其他测试
如果改为需要MFA登录的用户,则之前的错误又重新出现,

3.总结
本文简单介绍了一下Power Automate flow 运行过程中与MFA有关的一个错误及其解决方法。如果是以username/password方式来获取access token,可以更改Conditonal access policy或者单独新建一个Conditional access policy对特定的用户进行排除。获取access token的帐号可以使用专门的service account,这样可能更为安全一些。MFA相关的问题可能有更好的解决方法。关于Conditional Access具体信息,还可以参考mslearn文章。
note, 由于微软已经强制要求用户需要使用MFA进行Azure portal, Microsoft 365 admin center等平台的登录,上述用来获取access token的特定用户是登录不了Azure portal等平台的。
本文如果哪里有错误,麻烦告之,谢谢谢谢!