Spring Boot Keycloak - 如何验证 Bearer 令牌?
Spring Boot Keycloak - How to verify 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/*
您的安全约束必须至少包含一个角色,即:
keycloak.security-constraints[0].securityCollections[0].authRoles[0]=admin
请务必在 keycloak 中添加此角色并将其分配给您的用户。
您可以使用 spring 安全解决您的问题,如果您愿意的话。我觉得更好。可以找到说明 here.
例如:
@Override
protected void configure(HttpSecurity http) throws Exception
{
super.configure(http);
http
.authorizeRequests()
.antMatchers("/customers*").hasRole("USER")
.antMatchers("/admin*").hasRole("ADMIN")
.anyRequest().permitAll();
}
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/*
您的安全约束必须至少包含一个角色,即:
keycloak.security-constraints[0].securityCollections[0].authRoles[0]=admin
请务必在 keycloak 中添加此角色并将其分配给您的用户。
您可以使用 spring 安全解决您的问题,如果您愿意的话。我觉得更好。可以找到说明 here.
例如:
@Override
protected void configure(HttpSecurity http) throws Exception
{
super.configure(http);
http
.authorizeRequests()
.antMatchers("/customers*").hasRole("USER")
.antMatchers("/admin*").hasRole("ADMIN")
.anyRequest().permitAll();
}