使用 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。不過在開發階段,我們可以簡化這個過程,先手動新增帳號即可。新增應用程式帳號的流程分為兩個主要步驟:首先新增使用者,然後將該使用者分配到可使用的應用程式,以下是這兩個步驟的操作流程:
步驟一:新增使用者
步驟二:將使用者分配到應用程式
礙於篇幅的關係,整合 SAML2 SSO 的文章我會分成底下三篇來記錄,有需要的朋友再自行參考。
留言
張貼留言
您好,我是 Lawrence,這裡是我的開發筆記的網誌,如果你對我的文章有任何疑問或者有錯誤的話,歡迎留言讓我知道。