openid-connect - Okta 自省端点始终返回 false
问题描述
我正在尝试使用此处/introspect
记录的端点验证新获得的 Okta OIDC 访问令牌。我知道令牌很好,因为我只是在验证后从浏览器的调试器中得到它。
不知道为什么,但端点总是返回——false
即
{
"active": false
}
我正在从邮递员那里尝试这个。这是curl
Postman 生成的代码段。
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
在请求中传递标头。
解决方案
这是我的开发帐户中的一个工作示例,我使用的是默认授权服务器。您需要同时发送 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:
推荐阅读
- html - 联系人部分与使用 display: grid 的部分重叠
- c++ - Qt 创建者未定义对 linux 中“class::function”的引用
- kubernetes - 将 API Server App ID 应用于 k8s 集群规范
- concourse - 如何清除大厅中的所有资源检查
- c# - 拆分文本并将其放入字典
- python-3.x - Python:Pandas 模块 - 在数据框中填充 NaN(空值)的嵌套 IF 语句
- javascript - NestJS 和 Express 导致间歇性 UnhandledPromiseRejectionWarning
- reactjs - ReactJS 测试:无法读取未定义的属性“拥有”
- firebase - 如何在 Google Cloud Storage 中设置 file.download() 的目的地?
- python - 如何将一个 df 的列条目匹配到另一个 df;如果它们相同,请将另一列的条目从第一个 df 附加到第二个 df?