使用Okta進(jìn)行角色SSO的示例
本文提供一個以O(shè)kta與阿里云進(jìn)行角色SSO的示例,幫助您理解企業(yè)IdP與阿里云進(jìn)行SSO的端到端配置流程。
操作流程
本文的配置目標(biāo)是在Okta應(yīng)用中創(chuàng)建一個名為approle的屬性,并根據(jù)這個屬性的值來映射訪問阿里云的RAM角色。您可以按照下圖所示的操作流程完成阿里云、Okta的配置。
步驟一:在Okta創(chuàng)建支持SAML SSO的應(yīng)用
登錄Okta門戶。
單擊頁面右上方的賬號圖標(biāo),然后單擊Your Org。
在左側(cè)導(dǎo)航欄,選擇 。
在Applications頁面,單擊Create App Integration。
在Create a new app integration對話框,單擊SAML 2.0,然后單擊Next。
配置應(yīng)用名稱為role-sso-test,單擊Next。
配置SAML,然后單擊Next。
Single sign-on URL:
https://signin.aliyun.com/saml-role/sso
。Audience URI (SP Entity ID):
urn:alibaba:cloudcomputing
。Default RelayState:用來配置用戶登錄成功后跳轉(zhuǎn)到的阿里云頁面。
說明出于安全原因,您只能填寫阿里巴巴旗下的域名URL作為Default RelayState的值,例如:*.aliyun.com、*.hichina.com、*.yunos.com、*.taobao.com、*.tmall.com、*.alibabacloud.com、*.alipay.com,否則配置無效。若不配置,默認(rèn)跳轉(zhuǎn)到阿里云控制臺首頁。
Name ID format:選擇EmailAddress。
Application username:選擇Email。
Update application username on:保持默認(rèn)值。
在Feedback頁面,根據(jù)需要選擇合適的應(yīng)用類型,然后單擊Finish。
步驟二:在Okta獲取SAML IdP元數(shù)據(jù)
在應(yīng)用程序role-sso-test詳情頁,單擊Sign On頁簽。
在SAML 2.0區(qū)域,復(fù)制Metadata URL,將IdP元數(shù)據(jù)另存到本地。
步驟三:在阿里云創(chuàng)建SAML身份提供商
使用阿里云賬號登錄RAM控制臺。
在左側(cè)導(dǎo)航欄,選擇 。
在角色SSO頁簽,單擊SAML頁簽,然后單擊創(chuàng)建身份提供商。
在創(chuàng)建身份提供商頁面,輸入身份提供商名稱(okta-provider)和備注。
在元數(shù)據(jù)文檔區(qū)域,單擊上傳文件,上傳從步驟二:在Okta獲取SAML IdP元數(shù)據(jù)中獲取的IdP元數(shù)據(jù)。
單擊確定。
步驟四:在阿里云創(chuàng)建RAM角色
在RAM控制臺的左側(cè)導(dǎo)航欄,選擇 。
在角色頁面,單擊創(chuàng)建角色。
在創(chuàng)建角色面板,選擇可信實體類型為身份提供商,然后單擊下一步。
輸入角色名稱(admin)和備注。
選擇身份提供商類型為SAML。
選擇從步驟三:在阿里云創(chuàng)建SAML身份提供商中創(chuàng)建的身份提供商并查看限制條件后,然后單擊完成。
單擊關(guān)閉。
步驟五:在Okta配置Profile
編輯Profile,創(chuàng)建一個新的Attribute。
在Okta左側(cè)導(dǎo)航欄,選擇 。
搜索并單擊目標(biāo)應(yīng)用名稱role-sso-test。
在Profile Editor頁面的Attributes區(qū)域,單擊Add Attribute。
在Add Attribute對話框,填寫Attribute信息。
Data type:選擇string。
Display name:填寫將在用戶界面中顯示的名稱,本示例中請?zhí)顚?span data-tag="ph" id="codeph-8qx-p8b-cev" class="ph">
approle
。Variable name:填寫將在映射中引用的變量名稱,本示例中請?zhí)顚?span data-tag="ph" id="codeph-rac-0t3-tgc" class="ph">
approle
。您需要記錄該參數(shù)的值,下一步配置Attribute的時候會用到。Description:請根據(jù)需要填寫屬性描述,可以不填寫。
Enum:選中Define enumerated list of values,定義一個枚舉值列表。
說明我們使用Enum來確保用戶只能使用預(yù)定義的屬性值。您也可以不使用Enum,而獲得更高的靈活性。
Attribute members:填寫枚舉值列表,Value必須要與RAM中創(chuàng)建的角色名稱相同,例如:admin、reader。
Attribute Length:本示例使用枚舉值,因此不需要設(shè)置。如果您實際中未使用枚舉值,請根據(jù)需要設(shè)置屬性長度。
Attribute required:選中Yes。
Scope:取消選中User personal。
單擊Save。
配置Attribute。
在Okta左側(cè)導(dǎo)航欄,選擇 。
單擊應(yīng)用名稱role-sso-test。
在General頁簽下的SAML Settings區(qū)域,單擊Edit。
在Configure SAML頁面的Attribute Statements (optional)區(qū)域,配置如下圖所示的兩條數(shù)據(jù)。
配置第1條數(shù)據(jù):
Name:填寫
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName
。Value:選擇user.email。
配置第2條數(shù)據(jù):
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)
,是用登錄用戶在應(yīng)用Profile中的approle
屬性值來替換$approle
占位符,從而獲取最終的SAML屬性值。其中approle
是之前在Profile Attribute中定義的屬性。okta-provider
是步驟三:在阿里云創(chuàng)建SAML身份提供商中創(chuàng)建的身份提供商。<account_id>
需要替換為您的阿里云賬號ID。例如:String.replace("acs:ram::177242285274****:role/$approle,acs:ram::177242285274****:saml-provider/okta-provider", "$approle", appuser.approle)
。
步驟六:在Okta創(chuàng)建用戶并分配應(yīng)用
創(chuàng)建用戶。
在Okta左側(cè)導(dǎo)航欄,選擇 。
單擊Add person。
在Add Person頁面,填寫基本信息并將Primary email配置為被邀請用戶的Email,例如:username@example.com,然后單擊Save。
在用戶列表中,單擊用戶username@example.com Status列的Activate,然后根據(jù)頁面提示激活username@example.com。
分配應(yīng)用。
分配應(yīng)用有以下兩種方式,請任選其一。
為單個用戶分配應(yīng)用。
在Okta左側(cè)導(dǎo)航欄,選擇
。單擊目標(biāo)應(yīng)用名稱role-sso-test后,在Assignments頁簽下,選擇
。單擊目標(biāo)用戶username@example.com后的Assign。
選擇approle為admin。
單擊Save and Go Back。
單擊Done。
將用戶加入組,為組分配應(yīng)用。
在Okta左側(cè)導(dǎo)航欄,先選擇
,然后單擊Add Group,創(chuàng)建一個組。單擊組名稱,然后單擊Manage People,添加用戶到組中。
在Okta左側(cè)導(dǎo)航欄,選擇
。單擊目標(biāo)應(yīng)用名稱role-sso-test后,在Assignments頁簽下,單擊
。單擊目標(biāo)組后的Assign。
選擇approle為admin。
單擊Save and Go Back。
單擊Done。
說明如果一個用戶屬于多個組,生效的屬性值只能有一個,即在應(yīng)用的Assignments頁簽下第一個加入的組的相應(yīng)屬性會生效。如果用戶所屬的組發(fā)生變化,則會影響approle的取值。詳情請參見Okta用戶指南。
驗證結(jié)果
在Okta左側(cè)導(dǎo)航欄,選擇 。
單擊應(yīng)用名稱role-sso-test。
在General頁簽下的App Embed Link區(qū)域,復(fù)制Embed Link中的URL。
打開另一個瀏覽器,輸入獲取到的URL,用username@example.com登錄。
如果成功跳轉(zhuǎn)到您設(shè)置的
Default RelayState
對應(yīng)頁面(或默認(rèn)的阿里云控制臺首頁),則說明登錄成功。
(可選)在Okta中配置用戶對應(yīng)的多個角色
如果您需要讓用戶對應(yīng)阿里云的多個角色,則必須使用Group Attribute Statement,借助Group Name進(jìn)行配置。具體的配置方法如下:
創(chuàng)建多個組。其組名應(yīng)按照SAML斷言中Role Attribute要求的格式,例如:acs:ram::177242285274****:role/admin,acs:ram::177242285274****:saml-provider/okta-provider。
將username@example.com加入多個組。
在應(yīng)用的SAML Settings中,刪除Role所對應(yīng)的attribute statement,然后添加一個Group Attribute Statement。其中,Name填寫
https://www.aliyun.com/SAML-Role/Attributes/Role
,Filter應(yīng)確保能夠過濾出上述組名,例如:Start with acs:ram。進(jìn)行上述配置后,再次使用username@example.com登錄阿里云時,該用戶將會選擇登錄的角色。
關(guān)于Okta的相關(guān)操作,請參見Okta用戶指南。