授权类型为refresh_token的Microsoft图形授权不适用于工作帐户类型

ndh0cuux  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(229)

TLDR:刷新令牌适用于Outlook帐户,但在尝试刷新工作帐户的令牌时出现错误AADSTS 65001。

我正在开发一个日程安排应用程序(nodejs/react),我的用户可以在其中集成他们的outlook日历,这样访问者就可以在他们的日历中安排事件。

Msal配置

const msalConfig = {
    auth: {
        clientId: MICROSOFT_CREDENTIALS.CLIENT_ID,
        authority: 'https://login.microsoftonline.com/common/',
        clientSecret: MICROSOFT_CREDENTIALS.CLIENT_SECRET
    }
};
Msal.ConfidentialClientApplication(msalConfig);

我的应用程序注册信息:

支持的帐户类型:所有Microsoft帐户用户
Api权限(全部委派):日历.读/写,脱机访问,用户.读

我的应用程序流如下所示:

1.用户在其配置文件中有一个按钮来进行身份验证,被重定向到用msalClient.getAuthCodeUrl生成的url,在那里他被要求权限,
1.在同意之后,他被重定向回一个代码,我用这个代码来获取访问令牌(msalClient.acquireTokenByCode),
1.我通过调用'/me'终结点并显示帐户显示名称来测试我是否具有访问权限,
1.我从msal令牌缓存(getTokenCache().serialize())中获取刷新令牌,并使用homeAccountId获取正确的令牌,然后将其Map到用户,
1.现在用户已经集成了outlook日历,访问者应该能够与他一起安排事件,
1.访问者填写事件数据,
1.在创建事件之前,我通过使用grant_type将用户刷新令牌发布到“https://login.microsoftonline.com/common/oauth2/v2.0/token”来获取访问令牌:'刷新令牌',
1.我使用新的访问令牌将事件数据发布到“me/calendar/events”。
这对于www.example.com帐户非常有效outlook.com,但当我尝试使用工作帐户onmicrosoft.com时,在第7步中,当我尝试刷新令牌时,出现错误。错误为:

AADSTS65001:用户或管理员尚未同意使用ID为“[app id]”、名为“[app name]”的应用程序。请为此用户和资源发送交互式授权请求。

我希望有人能帮助这一点,我会很高兴地提供更多的信息,如果需要的!

jvlzgdj9

jvlzgdj91#

在Azure门户中,激活允许用户同意应用
Home -> Enterprise applications -> Your enterprise application -> User consent settings

相关问题