为啥我无法从 OAuth 2 服务器作为 JSON 接收“访问令牌”并且我需要定义“redirect_uri”?
Posted
技术标签:
【中文标题】为啥我无法从 OAuth 2 服务器作为 JSON 接收“访问令牌”并且我需要定义“redirect_uri”?【英文标题】:Why I cannot receive `Access Token` from OAuth 2 server as JSON and I need to define `redirect_uri`?为什么我无法从 OAuth 2 服务器作为 JSON 接收“访问令牌”并且我需要定义“redirect_uri”? 【发布时间】:2022-01-03 08:16:06 【问题描述】:我正在尝试从 Okta API
获取 JWT Access Token
,它使用标准 OAuth 2
流程,除了使用 sessionToken
,因此我可以使用自己的自定义登录表单,而不是重定向到他们的登录页面。
我需要这个 JWT 来访问我的自动化测试中的 API,所以我在 Java 中执行整个 OAuth 2 登录流程。
我做什么:
我将用户名/密码发送到/api/v1/authn
,我收到sessionToken
作为回应
在/oauth2/default/v1/token
中使用这个sessionToken
来接收我的JWT
我在此工作流程的第二部分看到了问题,因为即使我不在客户端上,我也需要将 redirect_uri
作为参数传递,并且我希望正确接收 JWT 以响应在我的 Java 项目的 API 调用中使用它。
标准 OAuth2 中是否有一种方法可以获取令牌而无需在 redirect_uri
上返回它,或者这正是 OAuth2 的工作方式,您只能在定义的端点上接收令牌...
【问题讨论】:
【参考方案1】:不,很遗憾,没有,除非您想改用client_credentials
flow。所有其他流程都假定它们是由用户代理执行的,因此应该使用来自 authZ 服务器的信息负载(代码或令牌)重定向到某个应用页面。
但是它是如何阻止你获得令牌的呢?您可以忽略重定向并处理来自授权服务器的响应。您可以查看我在https://devforum.okta.com/t/list-users-and-groups-with-and-administrator-read-only-account-with-no-login-page-prompted/15925/5?u=phi1ipp 中发布的 sn-p 以实现类似的解决方案
【讨论】:
以上是关于为啥我无法从 OAuth 2 服务器作为 JSON 接收“访问令牌”并且我需要定义“redirect_uri”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PHP 无法从 Js FormData fetch 中获取 $_POST 数据?
Django OAuth 2 客户端设置 - 客户端无法识别令牌
为啥 google oauth2 playground 无法返回数据?