概觀
Okta 可提供經過正規化的使用者生命週期、驗證、MFA 及管理活動資料。經審查的範例包括:account.locked— 帳號遭鎖定mfa.factor.activated— 啟用額外的 MFA 因素auth.login.failed— 登入失敗
/api/v1/users) 與系統記錄 (/api/v1/logs)。請參閱整合資料如何轉換為訊號。
選擇連線方式
兩種方式所需的存取權限相同,因此選擇的重點在於憑證的處理方式,而非平台可讀取的內容。
選項 A — API 權杖 (SSWS)
建議採用。Living Security 所需資訊
先決條件
- 您必須是 Okta Super Administrator,才能建立服務帳號使用者、指派管理員角色及建立 API 權杖。
1
建立權杖擁有者使用者
Okta API 權杖具有建立該權杖之使用者的權限,且若該使用者遭停用,權杖即會失效。請建立專用的服務帳號,而非使用個人管理員帳號,以確保連線不受人員異動影響。
- 在 Admin Console 中,前往 Directory → People。
- 按一下 Add person,並建立使用者,例如
svc-livingsecurity@yourcompany.com。 - 啟用該帳號。
2
指派唯讀管理員角色
平台僅進行讀取。授予超過讀取權限的存取權,會使權杖擁有從未使用的權限。
- 前往 Security → Administrators。
- 按一下 Add administrator,並選取上一步建立的使用者。
- 指派 Read-only Administrator 角色。
- 按一下 Save。
若未指派管理員角色,對 Okta Management API 的呼叫仍會以
200 OK 成功,但會傳回空白清單。系統不會出現 403 來告知您缺少角色 — 資料串流只會持續為空。3
建立 API 權杖
- 以步驟 1 建立的服務帳號使用者登入 Admin Console。權杖會繼承建立它的帳號。
- 前往 Security → API,並開啟 Tokens 索引標籤。
- 按一下 Create token,為其命名,例如
Living Security Platform,然後按一下 Create token。 - 請立即複製權杖值 — Okta 僅顯示一次,之後不會再顯示。
僅當您的 Okta 組織依網路區域限制 API 存取時,上述位址清單才有意義。大多數組織並未如此設定。
4
找出您的租戶子網域
您的 Admin Console URL 類似
https://acme-admin.okta.com。租戶子網域為 acme — 不含 -admin 後綴、不含 .okta.com,也不含 https://。疑難排解
已連線,但所有資料串流皆為空
已連線,但所有資料串流皆為空
權杖的擁有者沒有管理員角色。請將 Read-only Administrator 指派給服務帳號(步驟 2)— 當缺少該角色時,API 會傳回
200 OK 及空白清單,而非錯誤。人員異動後同步失敗
人員異動後同步失敗
若建立權杖的使用者遭停用,權杖即會失效。這就是權杖應屬於服務帳號而非個人的原因。
選項 B — OAuth 2.0 服務應用程式
當您的安全性政策不允許使用長期有效的 API 權杖時,請使用此方式。它以用戶端 ID 與您自有的 RSA 金鑰組取代權杖。在平台中,這是位於 設定 → 集成 → 目錄 下的 Okta (OAuth 2.0) 圖磚。 若要使用 Client Credentials 向 Okta 進行驗證,您需要下列項目:- 用戶端 ID - 您的 Okta API Services 應用程式的唯一識別碼。
- 私密金鑰 (JWK) - JSON Web Key 格式的 RSA 私密金鑰,其公開金鑰已註冊於您的 Okta 應用程式。
- Okta 網域 - 僅填寫您的 Okta 租戶子網域(例如
dev-12345678),而非完整主機名稱。 - 範圍 - 以空格分隔的 Okta Management API 範圍清單(例如
okta.users.read okta.logs.read)。
private_key_jwt 驗證的 API Services 應用程式。
先決條件:
- 您必須擁有 Okta 帳號。您可以在 developer.okta.com 註冊免費的開發人員帳號。
步驟 1:建立您的 Okta API Services 應用程式
- 登入您的 Okta Admin Console。
- 在左側邊欄中,前往 Applications > Applications。
- 按一下 Create App Integration。
- 選取 API Services 作為登入方式,然後按一下 Next。
- 為您的應用程式命名,然後按一下 Save。
- 在應用程式的 General 索引標籤上,找到您的 Client ID — 您將在最後一個步驟中用到它。
- 將 Client authentication 設定為 Public key / Private key。
okta.*範圍僅支援此驗證方式。
- 停用 Proof of possession (DPoP) — 系統不支援此功能。
應用程式必須建立為 API Services。
步驟 2:產生並註冊您的 RSA 金鑰組
使用 Okta 金鑰產生器
Okta 可直接在 Admin Console 中為您產生 RSA 金鑰組:- 在 Admin Console 中,開啟您的 API Services 應用程式。
- 前往 General 索引標籤,並捲動至 PUBLIC KEYS 區段。
- 按一下 Add Key,然後選取 Generate new key。
- 按一下 Save — Okta 會產生金鑰組,並僅顯示一次私密金鑰 (JWK)。
- 請立即複製並儲存私密金鑰 JSON — 之後不會再顯示。
- 公開金鑰會自動註冊至您的應用程式。
請在關閉對話方塊前複製私密 JWK。在最後一個步驟中,將其貼至 Living Security Platform 的私密金鑰欄位。
建立您自己的金鑰
Okta 對 API Services 應用程式使用private_key_jwt。您需要產生 RSA 金鑰組,將公開 JWK 註冊至 Okta,並將私密 JWK 提供給 Living Security Platform。
使用下列 Node.js 指令碼產生私密 JWK(需要 Node.js 18 以上版本):
- 在 Admin Console 中,開啟您的 API Services 應用程式。
- 前往 General 索引標籤,並捲動至 PUBLIC KEYS 區段。
- 按一下 Add Key,貼上上述指令碼輸出的公開 JWK JSON,然後按一下 Save。
您要貼至 Living Security Platform 的是私密 JWK。它包含所有金鑰資料(
d、p、q、dp、dq、qi)以及 kid。請妥善保密。步驟 3:找出您的 Okta 網域
僅輸入您的 Okta 租戶子網域 — 即.okta.com 之前的部分。
- 在 Admin Console 中,瀏覽器網址列會顯示類似
https://dev-12345678-admin.okta.com的 URL。 - 您的 Okta 網域僅為子網域(例如
dev-12345678),而非dev-12345678.okta.com。 - 或者,您也可以在 Admin Console 中前往 Settings > Account 查看您的 Okta 網域,然後使用其中的子網域部分。
步驟 4:為您的應用程式授予 API 範圍
Okta 要求每個權杖請求中至少包含一個範圍。應用程式必須先被授予特定範圍,才能請求這些範圍:- 在 Admin Console 中,前往 Applications > Applications,並開啟您的應用程式。
- 按一下 Okta API Scopes 索引標籤。
- 授予您的整合所需的範圍:
okta.users.read與okta.logs.read。
步驟 5:為您的應用程式指派管理員角色
僅授予範圍並不足夠 — 若您的應用程式沒有管理員角色,Okta Management API 端點(例如/api/v1/users)會靜默地傳回空白的 200 [] 回應。您必須至少指派 Read-Only Administrator:
- 在 Admin Console 中,前往 Security > Administrators(或前往 Applications > Applications > 您的應用程式 > Admin roles)。
- 按一下 Add administrator assignment,並選取您的 API Services 應用程式。
- 指派 Read-Only Administrator 角色(或更高的角色,視您所需的範圍而定)。
- 按一下 Save。
若沒有管理員角色,API 呼叫仍會以
200 OK 成功,但會傳回空白結果,且不會出現 403 錯誤來指出問題。步驟 6:在 Living Security Platform 中輸入憑證
取得您的用戶端 ID、私密金鑰 (JWK)、Okta 網域及範圍之後:- 開啟需要向 Okta (Client Credentials) 進行驗證的表單。
- 輸入您的用戶端 ID。
- 貼上您的私密金鑰 (JWK) — 即上述指令碼產生的完整 JSON 物件(單行或格式化皆可)。
- 將您的 Okta 網域僅以租戶子網域輸入(例如
dev-12345678)。 - 以空格分隔的清單輸入範圍(例如
okta.users.read okta.logs.read)。 - 提交表單後,即可成功完成驗證。
本文件的部分內容改編自 Nango,並依據 Elastic License 2.0 使用。

