2017-04-17 94 views
0

Keycloak版本2.4.0_FINAL。Spring Boot Keycloak - 如何驗證不記名令牌?

在我的Spring Boot REST API中,我想驗證Keycloak中的持票人標記。

我遵循以下步驟:

我增加了行家依賴性和下面的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/* 
+0

你的問題是,什麼是不工作? –

+0

keycuak何時驗證令牌?我仍然可以訪問API沒有標記,沒有反饋。 – xDs

+0

哪個端口是彈簧引導運行的,哪個端口keycloak? –

回答

2

您的安全約束必須至少包含一個角色,即:

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

一定要在keycloak添加此託萊並指定爲你的用戶。

+0

感謝您解決這個問題。 – xDs

+0

我現在在服務器上得到這個錯誤:NOT_ATTEMPTED:只有持票人 – xDs

+0

增加了新的問題:http://stackoverflow.com/questions/43559997/spring-boot-keycloak-bearer-how-to-solve-not-attempted-bearer只有 – xDs

0

你可以使用彈簧安全解決你的問題,如果這是你的選擇。我發現它更好。說明可以找到here

例如:

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