【发布时间】:2020-10-19 19:04:50
【问题描述】:
我正在尝试遵循 Oracle-Base Oracle Rest Data Service (ORDS) Authentication tutorial 为示例 ORDS API 设置基于 OAuth2 客户端凭据的身份验证。我已经尝试在 OAuth : Client Credentials 下检索访问令牌,但在示例中我得到“401 Unauthorized”而不是预期的“200 OK”。
我正在使用下面的 cURL 命令来检索访问令牌。请注意,我已经替换了 OAuth 客户端 ID 和客户端密码; schemaalias 也不同。否则,该命令尽可能与教程中的示例相同。
curl -i -k --user clientIdEtc..:clientSecretEtc.. --data "grant_type=client_credentials" http://localhost:8080/ords/schemaalias/oauth/token
我已测试该 API 在未配置身份验证时有效。
在示例环境中工作时,我通过 HTTP 而不是 HTTPS 进行连接。我按照教程开始时的说明允许 OAuth over HTTP,如果我没有这样做,我预计会出现 403 Forbidden 错误。
我已经仔细检查了各种人工制品,包括 ORDS 角色、权限、权限到角色关联、权限映射、客户端、客户端权限和客户端角色,据我所知它们匹配。
我正在使用 ORDS 版本 18.1.1.95.1251,它与 WebLogic Server 12c 一起部署。
取决于问题的原因在哪里:
- 如何连接才能使访问令牌的请求获得授权,或者
- 教程中是否缺少某些内容或我可能遗漏了什么?
【问题讨论】:
-
您使用的是什么版本的 curl?您可以使用命令
curl -V进行检查 -
@EJEgyed 我使用的是 7.73.0 版
-
有点相关 - 你知道如何使用用户名和密码进行身份验证吗?我正在发送带有
curl -ks -u "user:pass" https://##resource##.adb.uk-london-1.oraclecloudapps.com/ords/orders/orders/?q={"id": {"$eq":"1"}的 GET,但也得到了未经授权的 401。 -
@DavidMin 您使用哪种 ORDS 身份验证?您可能想将此作为一个新问题提出。
标签: oracle oauth access-token oracle-rest-data-services