使用 Okta 获取 refresh_token 服务器端 (sessionToken)

Getting refresh_token server-side (sessionToken) with Okta

我们希望为我们的微服务架构使用我们自己的带有访问和刷新令牌的 httponly 严格 cookie。

我们主要使用 OKTA 身份验证 API 通过我们自己的自定义登录页面登录用户。 我们能够使用带有 sessionToken 的 responsetype=token 在授权端点上获得 access_token,并将结果重定向为后端端点上的 form_post。

尽管在范围中添加了 offline_access,但我无法检索到 refresh_token,即使在我的 okta 应用程序设置中选中它也是如此。

我不想使用资源密码流,因为我们更喜欢使用 sessionToken,如果将来需要,它将与多因素一起使用。

我也尝试使用代码流并在我们的后端重定向结果,但由于代码流是客户端,所以 return 这个错误“当令牌端点身份验证方法时需要 PKCE 代码验证程序是'NONE'。”即使我们选择 .NET 应用程序也会出现此错误

我们如何使用 Okta 检索 refresh_token 服务器端?

在这里 https://devforum.okta.com/t/getting-refresh-token-server-side-sessiontoken/12419/3 回复了你的 post。

除了直接调用 /token with your access token you can also check our Early Access feature called 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}

此调用将 post 返回到我的同一服务器,因此我可以自己处理令牌并创建自己的 cookie。