【问题标题】:Spring Boot Keycloak - How to verify Bearer token?Spring Boot Keycloak - 如何验证承载令牌?
【发布时间】:2017-09-13 09:38:26
【问题描述】:

Keycloak 版本 2.4.0_FINAL。

在我的 Spring Boot REST API 中,我想在 Keycloak 中验证不记名令牌。

我按照以下步骤操作:

我将 maven 依赖项和以下内容添加到 application.properties。

keycloak.realm = realm
keycloak.auth-server-url = http://localhost:8080/auth
keycloak.ssl-required = external
keycloak.resource = app
keycloak.bearer-only = true
keycloak.credentials.secret = ...

keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /r/secure/*

下一步是什么?据我说,这是最后一步,但它似乎没有做任何事情。

更新 应用程序属性:

server.port = 8081
org.keycloak keycloak-tomcat8-adapter 2.4.0.Final
keycloak.realm = myapp
keycloak.auth-server-url = http://localhost:8080/auth
keycloak.ssl-required = external
keycloak.resource = mybackend
keycloak.bearer-only = true
keycloak.credentials.secret = ...
keycloak.use-resource-role-mappings = false

keycloak.securityConstraints[0].securityCollections[0].name = secure
keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /r/secure/*

【问题讨论】:

  • 你的问题是什么,什么不起作用?
  • keycloak 何时验证令牌?我仍然可以在没有令牌的情况下访问 api,没有反馈。
  • spring boot 在哪个端口上运行,keycloak 在哪个端口上运行?
  • 弹簧启动在 8081 端口(默认除外)
  • 我已经让弹簧安全适配器 + 弹簧靴一起正常工作。但是,如果您的配置不适合您,您应该进行一些调试。启用 keycloak 适配器的日志(通过 logging.level.org.keycloak=DEBUG)并查看发生了什么。

标签: spring keycloak bearer-token


【解决方案1】:

您的安全约束必须至少包含一个角色,即:

keycloak.security-constraints[0].securityCollections[0].authRoles[0]=admin

请务必在 keycloak 中添加此角色并将其分配给您的用户。

【讨论】:

  • 感谢您解决此问题。
  • 我现在在服务器上收到此错误:NOT_ATTEMPTED: bearer only
  • 我没有足够的声誉来评论其他问题,但由于某些原因,您的 Spring Boot 应用程序认为 http 请求不是 XHR 请求
【解决方案2】:

如果您愿意,您可以使用 spring security 解决您的问题。我觉得更好。说明可以在here找到。

例如:

@Override
protected void configure(HttpSecurity http) throws Exception
{
    super.configure(http);
    http
            .authorizeRequests()
            .antMatchers("/customers*").hasRole("USER")
            .antMatchers("/admin*").hasRole("ADMIN")
            .anyRequest().permitAll();
}

【讨论】:

    猜你喜欢
    • 2021-08-16
    • 2018-07-22
    • 2021-04-21
    • 2023-02-25
    • 2020-01-18
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多