首页 > 解决方案 > 使用代表流刷新令牌(使用 Teams 单点登录)

问题描述

我有一个使用 Microsoft Teams 的单点登录方案。请参阅文档中的完整描述:https ://docs.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/auth-aad-sso

我通过将“团队”令牌“交易”为访问令牌来获得访问令牌。

我的问题是,如何刷新此访问令牌?在单点登录场景中,不返回“refrehs_token”(?),因此正常的 OAuth2 刷新流程似乎是不可能的。

想象一下,我交易了一次,并获得了 2 小时后到期的访问令牌。我用它来访问图形 API(或其他),然后令牌过期。

我应该怎么做才能获得新的访问令牌?我可以向 Teams 索要一个新的“团队”代币并在旧代币过期的情况下再次交易吗?Teams App 负责刷新自己的令牌,对吗?我什么时候应该这样做(当我得到“拒绝访问”时,或者只是当我看到令牌已过期时?

标签: azure-active-directorymicrosoft-graph-apimicrosoft-teams

解决方案


看起来我找到了原因 - 你必须作为范围请求传递offline_access,然后你才能取回refresh_token. 这实际上是我的问题,并且记录在案,我只是没有仔细阅读:

https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow

refresh_token请求的访问令牌的刷新令牌。当前访问令牌过期后,调用服务可以使用此令牌请求另一个访问令牌。仅当请求了offline_access范围时才提供刷新令牌。


推荐阅读