我正在尝试从使用标准OAuth 2
流的Okta API
获取 JWTAccess Token
,除了使用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 的工作方式,您只能在定义的端点上接收令牌......
不,不幸的是,没有,除非你想做client_credentials
流程。所有其他流都假定它们由用户的代理执行,因此应该重定向到某个应用程序页面,其中包含来自 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 中发布的代码片段以实现类似的解决方案