【发布时间】:2021-11-05 05:17:43
【问题描述】:
我有一个托管在团队中的 webpart SPFX。 Webpart 相当复杂,因此有相应的后端。
当用户在前端执行特定的搜索操作时,我希望后端在向前端返回响应之前合并数据库中的一些数据和图表中的一些数据。
所以流程是这样的:
- 用户登录团队。
- 用户在搜索字段(前端)中输入搜索词。
- 前端需要一个访问令牌(由团队根据登录用户生成)来访问后端。
这是在前端(spfx webpart)中生成访问令牌的方式:
let provider = await context.aadTokenProviderFactory.getTokenProvider();
let graphToken = await provider.getToken("https://graph.microsoft.com/", true);
let backendToken = await provider.getToken("backend base url", true);
我的问题在后端,我无法创建一个访问令牌,让我代表登录到团队的用户访问图形 API。
我可以生成这样的令牌没有问题:
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
return new GraphServiceClient(authProvider);
但此客户端基于客户端 ID 和密码,而不是代表登录团队的用户。
有没有办法做我想要实现的目标?无需用户先登录团队 (1),然后再登录后端 (2)。
【问题讨论】:
-
您能否确认以下答案是否解决了您的问题?如果是,请接受答案,以便对其他社区成员有所帮助。
标签: .net-core azure-active-directory microsoft-graph-api microsoft-teams spfx