我有一个应用程序,支持基于saml的sso和oauth访问 Cloud 存储提供商,如谷歌驱动器,Dropbox和微软onedrive . 我有一个帐户设置,使用OneLogin作为身份提供商,我的应用程序和onedrive充当服务提供商 . 该应用程序要求用户对其 Cloud 存储提供程序进行身份验证,因此我在此身份验证步骤中将用户从应用程序重定向到onedrive . 因为他们正在使用onelogin sso,他们被从onedrive重定向到onelogin,他们登录onelogin,并被重定向回onedrive . 在这里,他们恢复oauth流并同意授予应用程序某些权限并发回代码 . 我使用此代码ping onedrive的/ token路由以将其交换为access_token和refresh_token . 但是我们没有收到refresh_token,因此要求用户经常需要使用onedrive重新进行身份验证 .
有没有人知道为什么我们没有收到refresh_token?我也接触过onelogin和microsoft(还没有进展/响应) . 我玩过MS azure和onelogin中的设置,但尚未解决问题 .
其他详情:
在microsoft azure中
-
,用户使用ws-federation联合
-
到目前为止,只有使用onedrive和sso提供程序的用户才会出现此问题
-
我正在使用v1 onedrive api
-
auth响应包括access_token和其他属性,而不是refresh_token
-
这里是详细说明onedrive的oauth流的链接,表明我可以期待来自https://login.microsoftonline.com/common/oauth2/token路径的refresh_token:https://docs.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/aad-oauth(实际上这个refresh_token是完成流程所必需的)
-
这是另一个SO帖子似乎有类似的问题,但与godaddy:Refresh token not returned for Office365 accounts purchased through GoDaddy(我已经尝试搞乱StsRefreshTokensValidFrom属性,但无济于事)
要清楚,流程是:
来自app的
-
,尝试使用onedrive进行oauth auth
-
被重定向到onelogin
-
登录onelogin
-
被重定向到onedrive
-
授予第三方应用访问权限
-
使用访问代码重定向回应用程序
-
oauth令牌的交换代码
-
无法接收refresh_token
谢谢!
1 回答
要获取refresh_token,您需要在OneLogin管理门户中配置的应用程序的SSO选项卡的令牌超时设置中设置刷新令牌(超时)字段 .