问题描述
我们希望为我们的微服务架构使用我们自己的 httponly 严格 cookie,其中包含访问和刷新令牌。
我们主要使用 OKTA 身份验证 API 通过我们自己的自定义登录页面来登录用户。 我们能够使用 responsetype=token 和 sessionToken 获取授权端点上的 access_token,并将结果重定向为后端端点上的 form_post。
尽管在范围中添加了 offline_access,但我无法检索 refresh_token,即使它在我的 okta 应用程序设置中进行了检查。
我不想使用资源密码流,因为我们更喜欢使用 sessionToken,如果将来需要,它将与多因素一起使用。
我还尝试使用代码流并在我们的后端重定向结果,但由于代码流是客户端,因此返回此错误“当令牌端点身份验证方法为‘NONE’时,需要 PKCE 代码验证程序。”即使我们选择 .NET 应用程序也会出现此错误
我们如何使用 Okta 检索服务器端的 refresh_token?
解决方法
在 https://devforum.okta.com/t/getting-refresh-token-server-side-sessiontoken/12419/3 处回复了您的帖子。
除了使用您的访问令牌直接拨打 /token 外,您还可以查看我们名为 Refresh Token Rotation 的抢先体验功能。如果这有帮助,请告诉我们!
,我能够使用 CODE 流程并从服务器端重定向到授权端点,如下所示:
https://{YOUROKTADOMAIN}/oauth2/default/v1/authorize?client_id={YOURCLIENTID}&response_type=code&scope=openid%20offline_access&response_mode=query&redirect_uri={YOURSERVERSIDEGETURI}&state={Guid.NewGuid()}&sessionToken=来自 Auth API}
此调用将回发到我的同一服务器,因此我可以自己处理令牌并创建自己的 cookie。