本文提供一個以Okta與阿里雲進行角色SSO的樣本,協助您理解企業IdP與阿里雲進行SSO的端到端配置流程。
操作流程
本文的配置目標是在Okta應用中建立一個名為approle的屬性,並根據這個屬性的值來映射訪問阿里雲的RAM角色。您可以按照下圖所示的操作流程完成阿里雲、Okta的配置。
步驟一:在Okta建立支援SAML SSO的應用
登入Okta門戶。
單擊頁面右上方的帳號表徵圖,然後單擊Your Org。
在左側導覽列,選擇 。
在Applications頁面,單擊Create App Integration。
在Create a new app integration對話方塊,單擊SAML 2.0,然後單擊Next。
配置應用程式名稱為role-sso-test,單擊Next。
配置SAML,然後單擊Next。
Single sign-on URL:
https://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:保持預設值。
在Feedback頁面,根據需要選擇合適的應用類型,然後單擊Finish。
步驟二:在Okta擷取SAML IdP中繼資料
在應用程式role-sso-test詳情頁,單擊Sign On頁簽。
在SAML 2.0地區,複製Metadata URL,將IdP中繼資料另存到本地。
步驟三:在阿里雲建立SAML身份供應商
使用阿里雲帳號登入RAM控制台。
在左側導覽列,選擇 。
在角色SSO頁簽,單擊SAML頁簽,然後單擊建立身份供應商。
在建立身份供應商頁面,輸入身份供應商名稱(okta-provider)和備忘。
在中繼資料文檔地區,單擊上傳檔案,上傳從步驟二:在Okta擷取SAML IdP中繼資料中擷取的IdP中繼資料。
單擊確定。
步驟四:在阿里雲建立RAM角色
在RAM控制台的左側導覽列,選擇 。
在角色頁面,單擊建立角色。
在建立角色面板,選擇可信實體類型為身份供應商,然後單擊下一步。
輸入角色名稱(admin)和備忘。
選擇身份供應商類型為SAML。
選擇從步驟三:在阿里雲建立SAML身份供應商中建立的身份供應商並查看限制條件後,然後單擊完成。
單擊關閉。
步驟五:在Okta配置Profile
編輯Profile,建立一個新的Attribute。
在Okta左側導覽列,選擇 。
搜尋並單擊目標應用程式名稱role-sso-test。
在Profile Editor頁面的Attributes地區,單擊Add Attribute。
在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。
單擊Save。
配置Attribute。
在Okta左側導覽列,選擇 。
單擊應用程式名稱role-sso-test。
在General頁簽下的SAML Settings地區,單擊Edit。
在Configure SAML頁面的Attribute Statements (optional)地區,配置如下圖所示的兩條資料。
配置第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建立使用者並分配應用
建立使用者。
在Okta左側導覽列,選擇 。
單擊Add person。
在Add Person頁面,填寫基本資料並將Primary email配置為被邀請使用者的Email,例如:username@example.com,然後單擊Save。
在使用者列表中,單擊使用者username@example.com Status列的Activate,然後根據頁面提示啟用username@example.com。
分配應用。
分配應用有以下兩者方式,請任選其一。
為單個使用者指派應用。
在Okta左側導覽列,選擇
。單擊目標應用程式名稱role-sso-test後,在Assignments頁簽下,選擇
。單擊目標使用者username@example.com後的Assign。
選擇approle為admin。
單擊Save and Go Back。
單擊Done。
將使用者加入組,為組分配應用。
在Okta左側導覽列,先選擇
,然後單擊Add Group,建立一個組。單擊組名稱,然後單擊Manage People,添加使用者到組中。
在Okta左側導覽列,選擇
。單擊目標應用程式名稱role-sso-test後,在Assignments頁簽下,單擊
。單擊目標組後的Assign。
選擇approle為admin。
單擊Save and Go Back。
單擊Done。
說明如果一個使用者屬於多個組,生效的屬性值只能有一個,即在應用的Assignments頁簽下第一個加入的組的相應屬性會生效。如果使用者所屬的組發生變化,則會影響approle的取值。詳情請參見Okta使用者指南。
驗證結果
在Okta左側導覽列,選擇 。
單擊應用程式名稱role-sso-test。
在General頁簽下的App Embed Link地區,複製Embed Link中的URL。
開啟另一個瀏覽器,輸入擷取到的URL,用username@example.com登入。
如果成功跳轉到您設定的
Default RelayState
對應頁面(或預設的阿里雲控制台首頁),則說明登入成功。
(可選)在Okta中配置使用者對應的多個角色
如果您需要讓使用者對應阿里雲的多個角色,則必須使用Group Attribute Statement,藉助Group Name進行配置。具體的配置方法如下:
建立多個組。其組名應按照SAML斷言中Role Attribute要求的格式,例如:acs:ram::177242285274****:role/admin,acs:ram::177242285274****:saml-provider/okta-provider。
將username@example.com加入多個組。
在應用的SAML Settings中,刪除Role所對應的attribute statement,然後添加一個Group Attribute Statement。其中,Name填寫
https://www.aliyun.com/SAML-Role/Attributes/Role
,Filter應確保能夠過濾出上述組名,例如:Start with acs:ram。進行上述配置後,再次使用username@example.com登入阿里雲時,該使用者將會選擇登入的角色。
關於Okta的相關操作,請參見Okta使用者指南。