我的通话 microsoftTeams.authentication.getAuthToken(authTokenRequest);
工作正常;也就是说,它成功返回一个成功解析到我的 Azure Active Directory (AAD) 的 token 。都好。出奇的简单。 JWT 返回正确的受众和范围(正如我在租户的 AAD 中设置的那样)
但是当我解码 JWT 时,我得到的结果似乎只是一个身份验证 token ,而不是访问 token 。
查看 Task Meow/teams.auth.service.js 处的示例似乎没有显示如何将身份验证交换为访问 token 。
我假设代码看起来像 getToken() 方法...但是因为我已经花了 10 多个工作日进行身份验证(老 ADAL 哦,我的天哪,这太可怕了)...
问题:
我想知道是否还有其他好的 MicrosoftTeams.js 身份验证/身份验证 token /MSAL 访问 token 示例?
最佳答案
无论如何,我确实通过以下方式解决了我的问题
- 通过
auth.service.js
的抽象遵循 TaskMeow 示例>sso.auth.service.js
>teams.auth.service.js
- 因为我想要额外的 AAD 范围(
Files.ReadWrite.All
用于访问 Teams 中的 Sharepoint Online 文件,以及Groups.ReadWrite.All
- 添加选项卡),所以我的getToken()
teams.auth.service.js
中的方法类似于以下内容:
getToken() {
if (!this.getTokenPromise) {
this.getTokenPromise = new Promise((resolve, reject) => {
this.ensureLoginHint().then(() => {
this.authContext.acquireToken(
'https://graph.microsoft.com',
(reason, token, error) => {
if (!error) {
resolve(token);
} else {
reject({ error, reason });
}
}
);
});
});
}
return this.getTokenPromise;
}
编辑评论:
- Microsoft Teams 中的身份验证太困难
- 文档中似乎有很多“方法”
- 当前的“SSO”流程仍然存在缺陷,并且处于“开发者预览版”中
如果您是 SPA 开发人员,那就太难了。我(显然)不是身份验证方面的专家——所以当前的“秘诀”是必要的。
如果您想要的范围超出 Single Sign-on 中所述的默认“范围”,则尤其如此。 ...Microsoft Graph 中的大多数“好东西”都不在这些默认范围内。
关于microsoft-teams - 新的 MicrosoftTeams.authentication.getAuthToken 不是 MS Graph Bearer : token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59946836/