MS Teams - 消息扩展 SSO - 声明
MS Teams - Messaging Extension SSO - Claims
我正在尝试为 Teams 中的消息传递扩展实施 SSO。我 运行 遇到的问题是缺少同意,User.Read.
我正在使用团队 SDK 通过消息传递扩展中的 microsoftTeams.authentication.getAuthToken
函数生成 ID 令牌,我将在服务器端交换它,但这不包括 User.Read 声明(所以用户不能同意它)我需要在以后的图形调用中使用它。我已经厌倦了将它添加到 AuthTokenRequest
中的“声明”属性,但它似乎没有做任何事情。
microsoftTeams.authentication.getAuthToken({
claims: ["https://graph.microsoft.com/user.read"],
successCallback: (token: string) => {
setToken(token);
},
failureCallback: (message: string) => console.log("Failed:", message)
});
如果我按照此处找到的应用程序 SSO 示例进行操作,我确信 SSO 设置正确,因为它使用机器人消息工作:https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso/nodejs
在打开消息扩展程序之前要求用户登录也正确地请求同意 User.Read。我在服务器上使用的是 node.js,这使得该文档更难理解:
https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/enable-sso-auth-me
如能提供有关在消息扩展中执行 SSO 时如何获得 User.Read 声明的任何帮助,我们将不胜感激。
干杯
获得我需要的额外范围的唯一方法 (User.Read) 是让服务器 return 出现关于无效授权的特定错误。
当客户端出现此错误时,调用microsoftTeams.authentication.authenticate
函数在弹出窗口中打开另一个页面window。
在此页面上,我使用 MSAL npm package 让用户同意 User.Read 权限
// There is more than just this call, but the documentation is pretty good
const request: RedirectRequest = {
scopes: [`https://graph.microsoft.com/User.Read`],
loginHint
};
msalClient.loginRedirect(request);
为了让它安静下来,我从团队上下文中获取了 loginHint
并将其传递给请求
microsoftTeams.getContext(context => {
start(context.loginHint ?? "");
});
我正在尝试为 Teams 中的消息传递扩展实施 SSO。我 运行 遇到的问题是缺少同意,User.Read.
我正在使用团队 SDK 通过消息传递扩展中的 microsoftTeams.authentication.getAuthToken
函数生成 ID 令牌,我将在服务器端交换它,但这不包括 User.Read 声明(所以用户不能同意它)我需要在以后的图形调用中使用它。我已经厌倦了将它添加到 AuthTokenRequest
中的“声明”属性,但它似乎没有做任何事情。
microsoftTeams.authentication.getAuthToken({
claims: ["https://graph.microsoft.com/user.read"],
successCallback: (token: string) => {
setToken(token);
},
failureCallback: (message: string) => console.log("Failed:", message)
});
如果我按照此处找到的应用程序 SSO 示例进行操作,我确信 SSO 设置正确,因为它使用机器人消息工作:https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-sso/nodejs
在打开消息扩展程序之前要求用户登录也正确地请求同意 User.Read。我在服务器上使用的是 node.js,这使得该文档更难理解: https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/enable-sso-auth-me
如能提供有关在消息扩展中执行 SSO 时如何获得 User.Read 声明的任何帮助,我们将不胜感激。
干杯
获得我需要的额外范围的唯一方法 (User.Read) 是让服务器 return 出现关于无效授权的特定错误。
当客户端出现此错误时,调用microsoftTeams.authentication.authenticate
函数在弹出窗口中打开另一个页面window。
在此页面上,我使用 MSAL npm package 让用户同意 User.Read 权限
// There is more than just this call, but the documentation is pretty good
const request: RedirectRequest = {
scopes: [`https://graph.microsoft.com/User.Read`],
loginHint
};
msalClient.loginRedirect(request);
为了让它安静下来,我从团队上下文中获取了 loginHint
并将其传递给请求
microsoftTeams.getContext(context => {
start(context.loginHint ?? "");
});