上篇文章註冊了新的服務,接下來需要新增Realm Role,即在這個服務中的角色。
先新增一個admin-role
Create Role
新增admin-role,之後再以相同步驟新增user-role
再來需要新增一個User(使用者)
設定完後修改 'user' 密碼
Temporary On 代表登入後需要重新修改密碼,Off則不用
接下來需要assign role給使用者
assign user-role給使用者
assign完後可以看到使用者的role裡有user-role了
因此目前就有了admin-role、user-role兩種realm-role,還有一個角色為user-role的使用者。
接下來就可以到Springboot服務(HAPI FHIR Server)新增與Keycloak的適配了!
首先需要import dependency
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>21.1.1</version>
</dependency>
import完成後修改application.yml
keycloak:
# 使用realm
realm: test
# keycloak服務器的地址
auth-server-url: http://localhost:8080
# client ID
resource: client01
public-client: true
cors: true
security-constraints:
# 角色和資源的關係
- auth-roles:
- user-role
security-collections:
- name: user
# 限定user-role這個角色只能瀏覽以下兩種URL
patterns:
- /fhir/Observation
- /fhir/Observation/*
- auth-roles:
- admin-role
security-collections:
- name: admin
patterns:
- /fhir/Observation
- /fhir/Observation/*
- /fhir/Patient
- /fhir/Patient/*
- /fhir/Organization
- /fhir/Organization/*
- /fhir/swagger-ui/*
修改完application.yaml,重新啟動HAPI FHIR Server後就會發現輸入符合pattern的網址會被轉導至Keycloak登入頁面,需要輸入正確帳號密碼登入後才能獲得資源。
以上的方法除了能用在HAPI FHIR Server外也能應用於一般的Springboot服務。使用者也能設定成可以自行創建,且可以透過Google、Github帳號等進行第三方登入。