Spring base rest apis 的 Keycloak 安全性

Posted

技术标签:

【中文标题】Spring base rest apis 的 Keycloak 安全性【英文标题】:Keycloak security for Spring base rest apis 【发布时间】:2015-12-03 23:10:55 【问题描述】:

我想将 keycloak 安全功能集成到基于 Spring Boot 的 rest api 中。 我正在使用 KeyCloak 1.3.1 Final。 现在这是纯粹的基于休息的 api,我正在通过 postman 进行测试

我的 rest api 得到了保护,当我尝试访问它时,确实要求我授权,但我无法执行我的请求。基本上被我的 api 锁定了。

我会快速列出我已经做过的事情

    创建了一个 spring boot rest api 并对其进行了测试。效果很好。 为 KeyCloak 修改了我的 gradle 并按照 document 进行了配置 为“仅承载”应用程序配置了我的 keyCloak 我尝试生成访问令牌,但无法生成。因此,我在 keycloak 中使用“机密”创建了另一个客户端,并使用该客户端生成访问令牌(两个客户端都指向同一个应用程序。不确定这是否正确) 使用此访问令牌,我正在尝试进行 api 调用,但得到 401 我再次使用这个document。

我是 keycloak 和 spring 的新手。


所以我想在这里问的是,我们如何生成访问令牌以在类似于此处的场景中测试 rest api。

KeyCloak 上任何可以帮助我的有用资源。到目前为止,我不知道问题出在哪里?是我的 api 还是我配置 KeyCloak 的方式。 另外,由于我是 Spring 新手,我只是找不到关于如何为 Spring Boot 配置 cloak 的体面文档。如果你也能帮忙的话。


更进一步,我在 KeyCloak 邮件列表中得知 Spring Boot 适配器仅支持基本身份验证,因此我决定将 Spring 安全适配器本身合并。 我这样做了,当我运行应用程序并提供凭据时仍然无法使其工作。然而,有趣的事情正在发生。我被重定向到http://127.0.0.1:8090/sso/login 我仔细检查了它,这不是我提供的重定向网址。 ??? 知道为什么吗? (我又是新手,在这个项目中学习弹簧和安全性。所以请多多包涵。)

【问题讨论】:

【参考方案1】:

所以在花了相当多的时间并从 keycloak 用户列表中获得一些帮助之后,我就是如何让它工作的。

    使用 Spring Security 而不是 spring boost 安全适配器(正如我在编辑中已经提到的,引导适配器仅用于基本身份验证)

documentation 很好地解释了其他所有内容。

我仍在测试整个事情,并将记录下来以供将来参考。

【讨论】:

Anunay,您能否描述一下您是如何设法修复重定向到 127.0.0.1:8090/sso/login 并获得正确的令牌的? 所以我们需要注意的事情很少,首先我们使用仅承载应用程序,要生成令牌,我们与其中一个机密应用程序对话并获取访问令牌(确保重定向网址设置正确)。如果你有访问令牌,你应该能够通过你的方式。你能告诉我你在哪里遇到问题吗?也许我可以贡献更多 很久了,但这里是我为小demo写的示例

以上是关于Spring base rest apis 的 Keycloak 安全性的主要内容,如果未能解决你的问题,请参考以下文章

带有可选 Base64 编码的 REST API 标头

使用 Python 进行 base64 解码,并使用基于 REST 的 Gmail API 下载附件

Spring Security + Angular App REST Token Based Authentication = 403 Forbidden on POST

kafka restful api功能介绍与使用

基于Spring Boot的RESTful API实践

使用 Spring Security Rest 插件保护 Grails Rest Api