# 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)