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]”的应用程序。请为此用户和资源发送交互式授权请求。
我希望有人能帮助这一点,我会很高兴地提供更多的信息,如果需要的!
1条答案
按热度按时间jvlzgdj91#
在Azure门户中,激活允许用户同意应用。
Home -> Enterprise applications -> Your enterprise application -> User consent settings