Spring Boot Keycloak - 如何验证Bearer令牌?

时间:2017-04-17 18:16:38

标签: spring keycloak bearer-token

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/*

下一步是什么?据我说,这是最后一步,但似乎没有做点什么。

更新 application.properties:

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/*

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

您可以使用弹簧安全解决您的问题,如果这是您的选择。我发现它更好。可以找到说明here

例如:

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