實作二:撤權之後,Agent 必須停下來
**目標:**把「我認得你」與「你可以做什麼」分開。
本課登入證明你是哪位學員。OpenFGA 另外判斷 user:studentXX 對 order:own 是否有 viewer 關係。每位學員擁有獨立 store;另外設一筆未授權資源 order:restricted 作為拒絕案例。
type user
type order relations define viewer: [user]- 先在「完整任務」查詢自己的訂單,記下成功結果。
- 選「存取授權」,按「撤銷我的查看權」。
- 重新執行訂單查詢。預期 OpenFGA 拒絕,流程停止,沒有發出資料庫憑證。
- 恢復查看權,再次查詢,預期成功。
- 按「嘗試未授權訂單」。即使自己有權看
own,仍不能看restricted。
| 測試 | 預期 |
|---|---|
| 有 viewer 關係 | allowed=true,繼續下一步 |
| 撤銷 viewer 關係 | allowed=false,不發證、不查資料 |
| 未授權訂單 | 永遠拒絕,不因另一筆訂單有權限而通過 |
學員可以改自己的教學授權,是為了實驗。正式環境中,Agent 不應能修改決定自己權限的政策。資料庫仍有自己的權限,不能只靠前端隱藏按鈕。
閱讀對照:Authorization in Action 與 OpenFGA 官方文件。本課採最小的直接關係模型;群組繼承、組織邊界、委派和時間條件可作進階練習。