账户联合认证(SSO)
概述
SAML(Security Assertion Markup Language)即安全标记语言,它是一个基于XML的通信协议,适用于在不同的安全域(Security Domain)之间交换认证和授权数据,以实现系统间账号的单点登录。 SAML协议的对象主要由身份提供方(IdP,Identity Provider), 服务提供方(SP, Service Provider)共同约束。
百度智能云支持基于SAML 2.0协议的单点登录。企业客户可以将支持SAML协议的账号系统作为IdP,将百度智能云作为SP,来打通企业已有账号系统与百度智能云的账号系统,实现单点登录(Single-sign on, 简称SSO)。
本文档将介绍当客户使用企业组织产品服务,需要对接已有企业目录,实现与百度智能云的SSO,即账户级的联合认证。
目前百度智能云已支持的其他单点登录方式为:
基于SAML 2.0的联合登录工作原理,请参考联合登录概览。
配置企业组织账户级联合登录
你可以通过配置企业端IdP的SAML节点和百度智能云SP的 企业组织 > 设置 ,从而实现企业用户从企业应用到百度智能云企业组织子账户的单点登录。
先决条件
- 企业IdP支持SAML 2.0协议;
- 拥有百度智能云的账号并激活;
- 百度智能云账号已开启企业组织服务,并具备管理员权限。
配置流程
配置基于SAML的单点登录功能,需要同时完成IdP配置和SP配置,其中IdP配置包含基本配置、用户属性配置和下载元数据等,SP配置包含创建身份服务提供商和配置信任策略。本文以微软公司的Azure Active Directory(AAD)为IdP,介绍如何配置SAML IdP和百度智能云的SP。
配置IdP
- 按照流程,注册Azure 账号;
- 登录Azure门户,在左侧导航栏中,进入 所有服务 > Azure Active Directory ;
-
点击 企业应用程序 > 新建应用程序 ,并选择 非库应用程序 ,填写应用名称,点击 添加 完成应用程序创建;
注意:非库应用程序要求开通AAD专业版,你可以选择开通免费试用版,并在完成配置后选择是否需要关闭该试用版。
- 进入应用程序,选择 单一登录 > SAML ;
- 在基本SAML配置中,点击右上方编辑按钮,配置 标识符(实体ID) 和 回复URL(断言使用者服务URL) 字段为
urn:bce:baidu:webservices
和https://login.bce.baidu.com/saml
- 在用户属性和字段中,点击右上方编辑按钮,添加如下用户属性字段:
名称 | 源 | 源属性 | 说明 |
---|---|---|---|
https://bce.baidu.com/SAML/Attributes/Subaccount |
属性 | {masterAccountId}:subAccount/{subAccountId},{masterAccountId}:saml-provider/{provider} | 将{masterAccountId}字段替换为主账户的accountId(在企业组织 > 账户管理获取), {subAccountId}字段替换为子账户accountId名称, {provider}字段替换为IdP名称(有效字符串即可),如azure |
以上字段为必填字段,你可以根据需要添加额外的用户属性字段,详细配置参考本地身份服务的SAML断言配置
- 在SAML签名证书中,下载IdP SAML元数据,IdP的配置到此结束。
配置SP
配置SP身份提供者
- 登录百度智能云, 鼠标移到右上方,进入企业组织 > 设置;
- 在账户级联合认证设置中,上传IdP配置步骤7中下载的SAML元数据,切换功能状态开关到打开状态 。
本地身份服务的SAML断言配置说明
基本配置
- SubjectConfirmationData中的
Recipient
字段必须配置为https://login.bce.baidu.com/saml
- AudienceRestriction中的Audience字段需要配置为
urn:bce:baidu:webservices
- 属性中需要有名称为
https://bce.baidu.com/SAML/Attributes/Subaccount
的断言,并且格式为“{masterAccountId}:subAccount/{subAccountId},{masterAccountId}:saml-provider/{provider}”,其中{masterAccountId}字段替换为主账户的accountId(在企业组织 > 账户管理获取), {subAccountId}字段替换为子账户accountId名称, {provider}字段替换为IdP名称(有效字符串即可),如azure
。
SAML断言属性
SAML断言的名称和IDP信任策略的属性是一一对应的,目前百度智能云支持的属性包括: saml:iss, saml:aud, saml:cn, saml:eduPersonAffiliation, saml:eduPersonPrincipalName,它们对应的SAML属性分别是:
名称 | 属性含义 |
---|---|
saml:iss | SAML断言的Issuer字段,非必填 |
saml:aud | SAML断言AudienceRestriction中的Audience字段 |
saml:cn | SAML断言中的urn:oid:2.5.4.3属性 |
saml: eduPersonAffiliation | SAML断言中的urn:oid:1.3.6.1.4.1.5923.1.1.1.1属性 |
saml: eduPersonPrincipalName | SAML断言中的urn:oid:1.3.6.1.4.1.5923.1.1.1.6属性 |
验证单点登录
先决条件
已经完成IdP和SP的SAML配置。
操作指南
- 登录Azure门户,导航到 所有服务 > Azure Active Directory > 企业应用程序 > testApp ;
- 点击 用户和组 > 新建用户 ,将需要授权单点登录的用户添加到该应用程序;
- 点击 单一登录 ,点击 Validate , 选择使用 作为当前用户登录 ,即可测试跳转到百度智能云页面;
- 如果需要将登录链接嵌入到企业应用中,可以直接在如下位置获取:
注意
开发时,在重定向到https://login.bce.baidu.com/saml
的时候需要携带SAMLResponse
中的信息,此信息中需要标明用户具体的身份断言。
<RequestedAttribute isRequired="true" Name="https://bce.baidu.com/SAML/Attributes/Subaccount" FriendlyName="RoleEntitlement"/>
这两个属性是必传的属性,其中
属性https://bce.baidu.com/SAML/Attributes/Subaccount
用于表示用户当前访问的账户,子用户,和IdP名称,其格式为"{masterAccountId}:subAccount/{subAccountId},{masterAccountId}:saml-provider/{provider}",其中{masterAccountId}字段替换为主账户的accountId(在企业组织 > 账户管理获取), {subAccountId}字段替换为子账户accountId名称, {provider}字段替换为IdP名称(有效字符串即可),如azure
。