首页 > 解决方案 > Okta 自省端点始终返回 false

问题描述

我正在尝试使用此处/introspect记录的端点验证新获得的 Okta OIDC 访问令牌。我知道令牌很好,因为我只是在验证后从浏览器的调试器中得到它。

不知道为什么,但端点总是返回——false

{
    "active": false
}

我正在从邮递员那里尝试这个。这是curlPostman 生成的代码段。

curl --location --request POST 'https://dev-359971.oktapreview.com/oauth2/v1/introspect' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=eyJr...yJPg' \
--data-urlencode 'client_id=0*****************7'

我在这里的 Okta 帮助中心发现了同样的问题,但无论解决方案是什么,它从未发布过。

更新:

我应该提到我的 Okta 应用程序被配置为 SPA,所以没有client_secret. Authorization这就是为什么我的 cURL 调用中没有标头的原因。根据此处的 Okta 文档:

对于没有 的公共客户端(例如单页和移动应用程序)client_secret,您必须client_id在调用/introspect端点时将 包含为查询参数。确保您没有Authorization在请求中传递标头。

标签: openid-connectokta

解决方案


这是我的开发帐户中的一个工作示例,我使用的是默认授权服务器。您需要同时发送 client_id 和 client_secret 并且在基本授权标头中配置它们是标准的:

视觉上

下面突出显示了有关该消息的关键信息:

在此处输入图像描述

卷曲

如果我插入正确的值,这适用于我的命令行:

curl --request POST --user myclientid:myclientsecret \
https://dev-843469.oktapreview.com/oauth2/default/v1/introspect \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode token=XXX

API OAUTH 注册

您还需要在 Okta 中将 API 注册为自省客户端,如我博客文章的第 6 步

图书馆

任何体面的库都会为您完成大部分工作,例如 NodeJS Open Id Client


推荐阅读