当前位置: 首页 > 知识库问答 >
问题:

使用有效的JWT令牌调用keycloak经过身份验证的API

长孙绍辉
2023-03-14

我已经创建了一个简单的spring boot应用程序,我已经使用KeyCloak对其进行了身份验证。当我调用服务(http://localhost:8080/table1data)时,它会将我重定向到keycloak登录页面,在该页面中插入我的领域用户名和密码,然后返回数据。现在到现在一切都很好。

我想要另一个场景。如果我的用户已经拥有相应领域的有效令牌,并且他希望使用正确的令牌访问相同的URL,那么不应该将该用户重定向到keycloak登录页面(这很有意义,因为用户拥有有效令牌)。如何在我的spring boot应用程序中创建这个场景?i-e将令牌传递给spring boot服务,该服务从keycloak验证此令牌,而不是将我重定向到登录页面。请提供任何在线文章的帮助或参考

我的控制器代码

public class Table1Controller {

    @Autowired
    private ITable1Repository table1Repository;

    @GetMapping("/table1data")
    public List<Table1Entity> getAllTable1Data() {
        return table1Repository.findAll();
    }
}

PS:我用邮差生成了令牌(附上图片)

共有1个答案

萧萧迟
2023-03-14

您需要在HTTP请求中添加一个授权请求,将“bearer my-sample-token”作为值,将令牌放在这里。

使用postman的示例

在Authorization选项卡中,您需要选择类型Bearer Token,并在Token字段中添加您的访问Token。

这基本上是在邮递员发出的HTTP请求中的“authorization:Bearer your-token”头中翻译出来的。相反,我主要使用从父项继承身份验证选项,因此如果使用请求集合,可以将令牌添加到集合本身,集合中的每个请求都将获得它。

如果您正在使用keycloak测试服务器,还可以考虑设置更大的访问令牌寿命,以避免如此频繁地获取一个令牌。

 类似资料:
  • 我试图用PHP为两个主题相连的领域创建一个简单的SSO系统。 因此,我想知道是否可以将包含用户用户名的签名JWT令牌从域a存储到本地存储。然后使用来自域B的相同密钥来验证JWT,这将导致成功的身份验证。 我在谷歌搜索了一些答案,我发现其中一些包含了一个中间认证域,它将负责认证。但我只想把我有的两个域联系起来。 谢了。

  • 我引用的是另一篇讨论在JWT中使用刷新令牌的SO帖子。 JWT(JSON Web令牌)自动延长到期时间 我有一个应用程序,它具有一个非常通用的体系结构,在这个体系结构中,我的客户机(web和移动)与一个REST API对话,然后再与一个服务层和数据层对话。 令牌每小时由客户端刷新一次。 如果用户令牌未被刷新(用户处于非活动状态且应用程序未打开)并且过期,则无论何时他们想要恢复,都需要登录。 我看到

  • 我正在做一个项目(没有生产级别,只是为了提高我的技能),我正在使用JWT来处理身份验证。从我所读到的内容来看,仅使用JWT作为访问令牌是非常不安全的,因此我们需要刷新令牌。因此,在登录时,服务器返回一个访问令牌和一个刷新令牌(我将存储在httpOnly cookie中)。访问令牌在短时间内到期,但刷新令牌在到期时用于获取新令牌。 我的问题是,我们何时使用刷新令牌来获取新的访问令牌?是当用户想要获得

  • 我按照教程,但它似乎不能正常工作与JWT,但它是确定的基本身份验证。 我下载并安装了JwtAuthForWebAPI。我还生成了JWT令牌并尝试执行API调用,但错误是。 我必须实现/修改任何东西来将索赔从JWT转移到线程。当前原则 我的代码非常简单:global.asax.cs: Web.config: 调用示例

  • 我在做一个全堆栈的web应用程序。我的前端由angular-cli组成,后端由node+Express构建。

  • 我正在尝试为我的应用程序构建一个身份验证解决方案。我使用React作为前端,使用API模式下的Rails作为后端。我有一个外部身份验证解决方案,我需要使用它。我无意中发现了Knock for JWT令牌管理,但我不理解文档,尤其是这部分“它必须有一个身份验证方法,类似于has_secure_password添加的方法”,因为由于我的外部身份验证服务,我没有用户模型。因此,在我的头脑中,登录请求将发