全部產品
Search
文件中心

Resource Access Management:使用Okta進行角色SSO的樣本

更新時間:Feb 05, 2024

本文提供一個以Okta與阿里雲進行角色SSO的樣本,協助您理解企業IdP與阿里雲進行SSO的端到端配置流程。

操作流程

本文的配置目標是在Okta應用中建立一個名為approle的屬性,並根據這個屬性的值來映射訪問阿里雲的RAM角色。您可以按照下圖所示的操作流程完成阿里雲、Okta的配置。

流程圖

步驟一:在Okta建立支援SAML SSO的應用

  1. 登入Okta門戶

  2. 單擊頁面右上方的帳號表徵圖,然後單擊Your Org

  3. 在左側導覽列,選擇Applications > Applications

  4. Applications頁面,單擊Create App Integration

  5. Create a new app integration對話方塊,單擊SAML 2.0,然後單擊Next

  6. 配置應用程式名稱為role-sso-test,單擊Next

  7. 配置SAML,然後單擊Next

    • Single sign-on URLhttps://signin.alibabacloud.com/saml-role/sso

    • Audience URI (SP Entity ID)urn:alibaba:cloudcomputing:international

    • Default RelayState:用來配置使用者登入成功後跳轉到的阿里雲頁面。

      說明

      出於安全原因,您只能填寫阿里巴巴旗下的網域名稱URL作為Default RelayState的值,例如:*.aliyun.com、*.hichina.com、*.yunos.com、*.taobao.com、*.tmall.com、*.alibabacloud.com、*.alipay.com,否則配置無效。若不配置,預設跳轉到阿里雲控制台首頁。

    • Name ID format:選擇EmailAddress

    • Application username:選擇Email

    • Update application username on:保持預設值。

  8. Feedback頁面,根據需要選擇合適的應用類型,然後單擊Finish

步驟二:在Okta擷取SAML IdP中繼資料

  1. 在應用程式role-sso-test詳情頁,單擊Sign On頁簽。

  2. SAML 2.0地區,複製Metadata URL,將IdP中繼資料另存到本地。

步驟三:在阿里雲建立SAML身份供應商

  1. 使用阿里雲帳號登入RAM控制台

  2. 在左側導覽列,選擇整合管理 > SSO管理

  3. 角色SSO頁簽,單擊SAML頁簽,然後單擊建立身份供應商

  4. 建立身份供應商頁面,輸入身份供應商名稱(okta-provider)和備忘

  5. 中繼資料文檔地區,單擊上傳檔案,上傳從步驟二:在Okta擷取SAML IdP中繼資料中擷取的IdP中繼資料。

  6. 單擊確定

步驟四:在阿里雲建立RAM角色

  1. 在RAM控制台的左側導覽列,選擇身份管理 > 角色

  2. 角色頁面,單擊建立角色

  3. 建立角色面板,選擇可信實體類型為身份供應商,然後單擊下一步

  4. 輸入角色名稱(admin)和備忘

  5. 選擇身份供應商類型為SAML

  6. 選擇從步驟三:在阿里雲建立SAML身份供應商中建立的身份供應商並查看限制條件後,然後單擊完成

  7. 單擊關閉

步驟五:在Okta配置Profile

  1. 編輯Profile,建立一個新的Attribute。

    1. 在Okta左側導覽列,選擇Directory > Profile Editor

    2. 搜尋並單擊目標應用程式名稱role-sso-test。

    3. Profile Editor頁面的Attributes地區,單擊Add Attribute

    4. Add Attribute對話方塊,填寫Attribute資訊。

      • Data type:選擇string

      • Display name:填寫將在使用者介面中顯示的名稱,本樣本中請填寫approle

      • Variable name:填寫將在映射中引用的變數名稱,本樣本中請填寫approle。您需要記錄該參數的值,下一步配置Attribute的時候會用到。

      • Description:請根據需要填寫屬性描述,可以不填寫。

      • Enum:選中Define enumerated list of values,定義一個枚舉值列表。

        說明

        我們使用Enum來確保使用者只能使用預定義的屬性值。您也可以不使用Enum,而獲得更高的靈活性。

      • Attribute members:填寫枚舉值列表,Value必須要與RAM中建立的角色名稱相同,例如:admin、reader。

      • Attribute Length:本樣本使用枚舉值,因此不需要設定。如果您實際中未使用枚舉值,請根據需要設定屬性長度。

      • Attribute required:選中Yes

      • Scope:取消選中User personal

    5. 單擊Save

  2. 配置Attribute。

    1. 在Okta左側導覽列,選擇Applications > Applications

    2. 單擊應用程式名稱role-sso-test。

    3. General頁簽下的SAML Settings地區,單擊Edit

    4. Configure SAML頁面的Attribute Statements (optional)地區,配置如下圖所示的兩條資料。edit Attribute

      • 配置第1條資料:

        • Name:填寫https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName

        • Value:選擇user.email

      • 配置第2條資料:

        • Name:填寫https://www.aliyun.com/SAML-Role/Attributes/Role

        • Value:取值為String.replace("acs:ram::<account_id>:role/$approle,acs:ram::<account_id>:saml-provider/okta-provider", "$approle", appuser.approle),是用登入使用者在應用Profile中的approle屬性值來替換$approle預留位置,從而擷取最終的SAML屬性值。其中approle是之前在Profile Attribute中定義的屬性。okta-provider步驟三:在阿里雲建立SAML身份供應商中建立的身份供應商。<account_id>需要替換為您的阿里雲帳號ID。例如:String.replace("acs:ram::177242285274****:role/$approle,acs:ram::177242285274****:saml-provider/okta-provider", "$approle", appuser.approle)

步驟六:在Okta建立使用者並分配應用

  1. 建立使用者。

    1. 在Okta左側導覽列,選擇Directory > People

    2. 單擊Add person

    3. Add Person頁面,填寫基本資料並將Primary email配置為被邀請使用者的Email,例如:username@example.com,然後單擊Save

    4. 在使用者列表中,單擊使用者username@example.com Status列的Activate,然後根據頁面提示啟用username@example.com。

  2. 分配應用。

    分配應用有以下兩者方式,請任選其一。

    • 為單個使用者指派應用。

      1. 在Okta左側導覽列,選擇Applications > Applications

      2. 單擊目標應用程式名稱role-sso-test後,在Assignments頁簽下,選擇Assign > Assign to People

      3. 單擊目標使用者username@example.com後的Assign

      4. 選擇approle為admin。

      5. 單擊Save and Go Back

      6. 單擊Done

    • 將使用者加入組,為組分配應用。

      1. 在Okta左側導覽列,先選擇Directory > Groups,然後單擊Add Group,建立一個組。

      2. 單擊組名稱,然後單擊Manage People,添加使用者到組中。

      3. 在Okta左側導覽列,選擇Applications > Applications

      4. 單擊目標應用程式名稱role-sso-test後,在Assignments頁簽下,單擊Assign > Assign to Groups

      5. 單擊目標組後的Assign

      6. 選擇approle為admin。

      7. 單擊Save and Go Back

      8. 單擊Done

      說明

      如果一個使用者屬於多個組,生效的屬性值只能有一個,即在應用的Assignments頁簽下第一個加入的組的相應屬性會生效。如果使用者所屬的組發生變化,則會影響approle的取值。詳情請參見Okta使用者指南

驗證結果

  1. 在Okta左側導覽列,選擇Applications > Applications

  2. 單擊應用程式名稱role-sso-test。

  3. General頁簽下的App Embed Link地區,複製Embed Link中的URL。

  4. 開啟另一個瀏覽器,輸入擷取到的URL,用username@example.com登入。

    如果成功跳轉到您設定的Default RelayState對應頁面(或預設的阿里雲控制台首頁),則說明登入成功。successful result

(可選)在Okta中配置使用者對應的多個角色

如果您需要讓使用者對應阿里雲的多個角色,則必須使用Group Attribute Statement,藉助Group Name進行配置。具體的配置方法如下:

  1. 建立多個組。其組名應按照SAML斷言中Role Attribute要求的格式,例如:acs:ram::177242285274****:role/admin,acs:ram::177242285274****:saml-provider/okta-provider。add group

  2. 將username@example.com加入多個組。

  3. 在應用的SAML Settings中,刪除Role所對應的attribute statement,然後添加一個Group Attribute Statement。其中,Name填寫https://www.aliyun.com/SAML-Role/Attributes/RoleFilter應確保能夠過濾出上述組名,例如:Start with acs:ram。group Attribute

  4. 進行上述配置後,再次使用username@example.com登入阿里雲時,該使用者將會選擇登入的角色。Role sign in

關於Okta的相關操作,請參見Okta使用者指南