---
# System prepended metadata

title: RESTful API 存取控制

---

# RESTful API 存取控制
- [web repository 之存取控制](https://hackmd.io/z32l89LISB2xsEL2kDby-w?view)
-- 數位內容儲存庫，如: FHIR server、DICOMWeb server、or 其他 web servers
- 搭配 [patient portal](https://hackmd.io/F0KKJei8So2sGLkoH9QcZA?view)授權及權限 token 核發
## 腳色定義
- Authentication and authorization portal (認證授權入口網站)
- Repository (內容儲存庫)
- Resource owner (內容擁有者): 內容所屬之人員或組織
-- 掌控所屬內容之增修改查
-- 授權其他使用者或用戶端系統存取
- Workflow authentication manager (臨醫流程授權管理者)
-- 搭配作業流程
-- 授權其他使用者或用戶端系統存取
- User (使用者): 被授權的使用人員或組織
- HTTP client system 
-- Resource owner 或 user 使用的 HTTP client 系統
-- 如瀏覽器、手機或電腦 APP、可直接連網之物連網裝置(如智慧手表、[PHG](https://hackmd.io/0JUUveCYT7qftYvPwukKWQ?view#IoMT))
### 依據應用情境，可由 Resource owner 或 Workflow authentication manager 來授權

## Portal 裝置及文件管理、憑證管理、組織人員授權、取得 token 步驟
- **可搭配專業之 FHIR 雲端方案建構**
### 裝置及文件註冊
- 裝置註冊，使用 FHIR device
- 註冊: PHD(可直接上網的裝置)、PHG(上網 gateway)
-- 可下載所屬組織病人資料
--- PHG 可查詢所屬組織或使用者擁有的裝置
-- 使用 [Device.specialization]( https://www.hl7.org/fhir/device-definitions.html#Device.specialization) 描述裝置可產生及上傳的生理數據
--- 如智慧手機可產生的生理資訊，或 PHG 可連結的生理裝置
- 搭配所屬組織及人員，或就醫情境，設定 Device  授權範圍 (authorized scope)

### 內容發佈及授權流程
1. Authentication 
-- 驗證使用者(**Resource owner** ) 
-- [若需要也驗證其使用之 HTTP client system](https://hackmd.io/UnukIMfsTPumkxf_gmJ5hw?view#Client-and-user-authnetication)
2. 上傳內容到 repository
-- 病人可上傳個人健康資料，但個人裝置或醫護端系統可設定上傳權限
4. 將內容索引上傳到 portal
5. 授權 user 或 user之 HTTP client 系統存取

### 使用 RESTful API 流程
1. Authentication 
-- 驗證使用者(**User**) 
-- [若需要也驗證其使用之 HTTP client system](https://hackmd.io/UnukIMfsTPumkxf_gmJ5hw?view#Client-and-user-authnetication)
2. 若需要，先查詢及選取被授權內容
-- user 使用 HTTP client 系統 到 portal 查詢及選取被授權內容
4. user 使用 HTTP client 系統向 portal 取得授權 token
5. user 使用 HTTP client 系統向 repository 存取資料
- 需有認證及授權 token
- 授權 token 可基於應用情境發放
-- 如授權遠端照護醫護人員可檢視民眾的問題狀況及生理監測資料
--- 透過醫護端網頁或 APP，搭配授權 token 存取

## Client and user authnetication
- [認證 http client system 的方式](https://tools.ietf.org/id/draft-parecki-oauth-v2-1-00.html#name-client-authentication)
-- 雙向 SSL: web server 認證 clinet 簽署的內容
-- 使用 oAuth 2.1 open ID JWT 認證 token
--- 向 portal 取得  JWT 認證 token
---- portal 認證client system 及 user 的方式另議
--- 連線 repository 或其他 web server 時，驗證此 JWT token


### 參考資訊
- [IHE IUA](https://ihe.github.io/ITI.IUA/IHE_ITI_Suppl_IUA) 
- [IETF oAuth 2.1](https://tools.ietf.org/id/draft-parecki-oauth-v2-1-00.html#name-client-authentication)
