OKTA管理员和用户的不同令牌

问题描述

我有一个带有几个其他端点的spring boot应用程序。我试图将oaut2和okta一起使用,以根据角色限制对这些端点的访问。到目前为止,我已经做到了:

我已经可以通过致电获得BEARER令牌:

oauth2 / default / v1 /令牌

然后,我可以使用令牌来攻击本地主机中的端点。

我尝试使用其中一些https://developer.okta.com/blog/2017/10/13/okta-groups-spring-security

实现基于用户组的访问。现在的问题是,在调用oauth2 / default / v1 / token时,我使用的是应用程序中提供的用户名和密码作为客户端ID和客户端凭据。

是否可以通过调用包含用户特定信息的/ token端点来生成令牌?

解决方法

Okta尚未公开公共API来生成令牌,但是可以使用api /api/internal/tokens来生成令牌,Okta UI使用此API生成令牌

,

大多数用户范围的OAuth流都包括当您将用户重定向到授权端点时通过浏览器进行身份验证。如果您无法执行此操作,则可以进行一系列后端调用,以通过授权码流(建议)或隐式流(不那么安全)来接收令牌。请注意,只有在有问题的用户掌握Okta的情况下,此选项才有效(又名,该用户在Okta中具有密码并且未联盟)

  1. /authn进行主身份验证,以提供用户的用户名/密码
  2. 如果不需要用户回答MFA挑战,则此呼叫返回的状态将为SUCCESS,并且您将在响应中返回sessionToken
  3. 包括sessionToken as a parameter in your authorize request,以请求分配给相关应用程序的用户的授权码(授权码流)或令牌(隐式流)。
  4. 如果使用授权码流,请调用/ token端点以取回令牌。如果使用隐式流,则您已经有令牌