使用 NET Core 建置 SAML2 SSO 站台 - Okta 身分驗證服務商(IdP)設定

上一篇文章中,你應該已經了解了 SAML 是什麼以及其運作原理,在這篇文章中,我將記錄如何申請並設定身分驗證提供商 Okta,但請記得先準備好你的應用程式憑證檔案,通常為 .crt 附檔名結尾,若還不知道那是什麼,請先回到上一篇文章複習一下,如果已經準備好了,就讓我們直接開始吧。


註冊 Okta 開發者帳號

  • 若您還沒有開發者帳號,請先到 Okta 註冊一個開發者帳號。
  • 請注意 Okta 有區分成 Workforce Identity Cloud(公司員工用)和 Customer Identity Cloud(外部客戶)兩個不同的平台,我們這次的範例是要模擬整合內部系統用,因此請選擇註冊 Workforce Identity Cloud。
  • 填寫相關資料完成註冊,你會收到一封確認電子郵件,點擊電子郵件中的確認連結,並完成帳號設定。
  • 完成登入後,請記住下圖紅框處你被分配的子網域,更換電腦登入時,必須要輸入這個部分,要是忘記了會有點麻煩。


在 Okta 中設定應用程式

  • 新增應用程式:在左側選單中點擊 Applications → Create App Integration。
  • 選擇 SAML 2.0:在彈出的視窗中,選擇「SAML 2.0」作為應用程式的整合方式。
  • 接下來會開啟精靈視窗,各步驟依照你的需求進行調整即可,這個要是設定錯誤,後續還是可以調整。
  • 第一個步驟(General Settings):按照提示填寫應用程式名稱和設定 Logo。
  • 第二個步驟(Configure SAML):這邊是最重要的部分,我在這個範例只有使用到數位簽章,並沒有使用加密,如果你覺得 SAML 回應必須要加密會比較安全的話,可自己針對自己的需求調整,底下針對我範例使用到的參數進行說明。
    • Single sign-on URL:很重要,很重要,很重要,完成 Idp 登入驗證,會把通過驗證的 SAMP Response 回傳到你的應用程式 API 的網址,一開始沒看說明,以為是設定應用程式的進入點,例如 https://FQDN:port/SamlAuth/AssertionConsumerService
    • Audience URI (SP Entity ID):應用程式的 Issuer,第一次設定的人可能會比較困惑,很多網站會將這個設定為應用程式進入點的網址,但實際這個欄位不一定是要是網址,你也可以設定一個標識服務的名稱,例如 LawrenceService
    • Response:上傳你的應用程式的憑證,並指定該欄位為 "Signed",這邊實際測試,若沒有指定,在使用單點簽出時,會拋回簽章不正確的錯誤,所以我猜測應該是除了 Assertion 的回應,其餘會吃這邊的設定。
    • Assertion Signature:上傳你的應用程式的憑證,並指定該欄位為 "Signed",這樣設定後,SAML Response 會包含數位簽章。這樣可以在應用程式端驗證這個 SAML Response 是來自信任的 IdP,通常這個欄位設定為 "Signed" 會比較安全。
    • Signature Algorithm:簽章使用的雜湊演算法,請跟你的憑證設定一樣。
    • Digest Algorithm:這個我不是很確定用在哪,但我的設定跟簽章一樣的設定。
    • Signature Certificate:上傳您的應用程式簽名憑證,即之前準備好的 server.crt 檔案。
    • Enable Single Logout:是否支援應用程式單點簽出,根據你的需求設定即可,此設若啟用,並且搭配程式呼叫可達到登出應用程式時,一併將該站台登入的 Okta 認證一併登出。
    • Single Logout URL:設定 Single Logout 的 URL,這是當使用者登出時 Okta 會發送登出請求的地方。
    • SP Issuer:若程式要驗證 Response 是否正確時使用。


SAML Metadata

SAML (Security Assertion Markup Language) Metadata 是一組用來描述 SAML 實體(entities,例如身份提供者 IdP 和服務提供者 SP)和它們之間的聯繫的 XML 文件,簡單來說就是紀載著 IdP 個各項資訊,例如 IdP SSO 的進入網址、登出網址、Issuer 和 IdP 的簽章等重要資訊,在你完成了上述的 Okta 設定後,可以在應用程式的設定內找到 Metadata URL,這個部分是後續整合會需要使用到的


Metadata URL 的 XML 內容


新增測試使用者

在正式環境中,企業應透過身份提供商 (IdP) 提供的代理程式 (Agent) 將組織內各應用程式和 AD 等帳號同步到 Okta。不過在開發階段,我們可以簡化這個過程,先手動新增帳號即可。

新增應用程式帳號的流程分為兩個主要步驟:首先新增使用者,然後將該使用者分配到可使用的應用程式,以下是這兩個步驟的操作流程:

步驟一:新增使用者

  • 進入 Okta 管理介面,找到「人員」,點擊「新增使用者」按鈕。
  • 填寫使用者的基本資料,例如姓名、電子郵件等,並設定臨時密碼或選擇讓 Okta 自動生成。
  • 確認並儲存新增的使用者。


步驟二:將使用者分配到應用程式

  • 進入 Okta 管理介面,找到剛剛建立的「應用程式」,並選擇需要分配「人員」的應用程式。
  • 點擊「Assignments」選項,然後選擇「分配給人員」。
  • 從使用者列表中選擇剛新增的使用者。
  • 確認使用者名稱並完成分配操作。



留言