[SA HW3] matrix:mas - mas

69 views
Skip to first unread message

李宗諺

unread,
Dec 4, 2025, 11:53:10 AM (4 days ago) Dec 4
to NYCU NASA 課程討論區
助教您好,

我目前卡在了matrix:mas - mas這個測資,OJ上的訊息是

###### Check MAS Client Credentials Flow ######
2025-12-04 23:50:47 [INFO] Found MAS client credentials.

然後就沒有下文了

我有看到其他同學提出相同的問題,您回覆說「會停在這一步應該是因為拿 access token 的時候失敗了」,所以我也照這個方向檢查了一下。我撰寫了一個檢查的腳本,結果如附圖。
Screenshot 2025-12-05 005109.png
可以確認狀況如下
1.在 /etc/environment 中有設定 MAS 的環境變數
2.在 VM 內用 getent hosts 檢查 mas.112550039.cs.nycu 也有正常解析

接著我在 VM 內,用同一組 SA_MAS_CLIENT_ID / SA_MAS_CLIENT_SECRET 呼叫 MAS 的 token endpoint,實際執行的結果如下
==== Call MAS token endpoint ====
[INFO] Token endpoint URL = https://mas.112550039.cs.nycu/oauth2/token
[INFO] Using client_credentials flow with scope 'urn:mas:admin'.
[INFO] HTTP status code from /oauth2/token = 502
[INFO] Response body (first 300 bytes):
[BODY]  (目前是空的,沒有 JSON)

也就是說,從 VM 自己用這組 client credentials 去打 https://mas.112550039.cs.nycu/oauth2/token,會拿到 Caddy 回的 502,完全沒有 access token,所以我猜測 OJ 在這一步也遇到相同的錯誤,才會只印出 Found MAS client credentials. 就停住。

想請問助教
1.目前從我自己的測試看起來,token endpoint 一定會回 502。這樣的狀況是不是代表我的 MAS container 或 Caddy 的反向代理,一定有哪一個設定是錯的?
2.OJ 是不是就是用 https://mas.{ID}.cs.nycu/oauth2/token 搭配 grant_type=client_credentials、scope=urn:mas:admin 來拿 admin token?
3.能否請助教幫忙指點:在這個測試中,MAS 端最重要需要確認的設定是哪些,或我應該優先檢查哪幾個地方?

謝謝助教的協助。

bogay.cs12

unread,
Dec 4, 2025, 9:14:17 PM (3 days ago) Dec 4
to NYCU NASA 課程討論區
同學你好,
針對你的問題:
1. 502 這個 status code 通常代表 reverse proxy 沒辦法成功從上游拿到合法的 response,不見得是設定錯誤,但確實代表這兩個元件彼此之間的通訊有問題
2. 沒錯
3. 以你的例子建議可以看看 caddy 的 log 是否有關於無法連線到 MAS 的錯誤訊息,或是 MAS 本身有沒有任何錯誤訊息

TA bogay
august12...@nycu.edu.tw 在 2025年12月5日 星期五凌晨12:53:10 [UTC+8] 的信中寫道:

李宗諺

unread,
Dec 5, 2025, 8:38:44 AM (3 days ago) Dec 5
to NYCU NASA 課程討論區
助教您好,

關於 HW3 的 Matrix + MAS 部分我想再確認一下 PostgreSQL 的使用方式,附上說明如下。

我先執行我自己的寫的確認腳本,結果為:
Screenshot 2025-12-05 210704.png
1.docker compose ps 中 deploy-mas-1、deploy-postgres-1、deploy-web-1 都是 Up 狀態
2.透過 psql 連線到 postgres container,可以看到資料庫列表裡 有 mas 這個 DB(status: PRESENT)
3.https://mas.112550039.cs.nycu/.well-known/openid-configuration 回應 HTTP 200,會回正確的 JSON  
4. 用 SA_MAS_CLIENT_ID / SA_MAS_CLIENT_SECRET 對 https://mas.112550039.cs.nycu/oauth2/token 發 grant_type=client_credentials&scope=urn:mas:admin,也會拿到 HTTP 200 + access_token

這個狀態下看起來 MAS 是正常工作的。  但是submit後OJ只顯示

###### Check MAS Client Credentials Flow ######
[INFO] Found MAS client credentials.

OJ 測試結束後,我再在 VM 裡跑同一個「MAS quick status」腳本,結果變成
Screenshot 2025-12-05 210833.png
1.docker compose ps 還是有 deploy-mas-1 / deploy-postgres-1 / deploy-web-1  
2.用 psql 查詢時,資料庫列表裡已經沒有 mas 這個 DB(status: MISSING)
3.這時候再打https://mas.112550039.cs.nycu/.well-known/openid-configuration 會回 HTTP 502,https://mas.112550039.cs.nycu/oauth2/token 也是HTTP 502

也就是說在我本機測試時,MAS + Postgres 是正常的;但 OJ 跑完一次之後,mas 這個 DB 就不見了,而且 MAS 變成 502,並且反覆測了幾次都是這樣。

所以我想請教幾個比較關鍵的問題
1.  在 matrix:mas 測試流程中,TA 端的 script 會不會對 postgres 做 reset?
2.  關於 MAS 使用的資料庫,是能把 MAS 直接接到已經存在的 uurl 資料庫,還是要為 MAS 另外建立 mas 這個 DB,並且寫一個 init script讓他自動重建mas資料庫?

bogay.cs12 在 2025年12月5日 星期五上午10:14:17 [UTC+8] 的信中寫道:

bogay.cs12

unread,
Dec 5, 2025, 1:13:11 PM (3 days ago) Dec 5
to NYCU NASA 課程討論區
同學你好,
1. matrix:mas 這個測項中並不會直接動到,我只有在 database:user-permission 這個測項中有出現刪除 DB 的行為,但不會把整個 DB 刪掉,只會碰到 judge 在測試時產生的資料
2. 可以共用資料庫或分開,這部分沒有限制

BTW,我有稍微調整了 matrix 相關測項的腳本,現在應該會印出更多 log,希望對大家有幫助。

TA bogay

august12...@nycu.edu.tw 在 2025年12月5日 星期五晚上9:38:44 [UTC+8] 的信中寫道:
Reply all
Reply to author
Forward
0 new messages