本文提供一个以Azure AD(Azure Active Directory,以下简称 AAD)与阿里云进行角色SSO的示例,帮助用户理解企业IdP与阿里云进行SSO的端到端配置流程。

背景信息

在本示例中,企业拥有一个阿里云账号(Account1)和一个企业员工用户(u2)。企业可以使用AAD进行员工管理,并通过AAD配置包括阿里云在内的企业应用。配置完成后,您可以更好的管理企业员工,企业员工也可以实现从AAD到阿里云的角色SSO。


场景

在AAD库中添加应用程序

  1. 管理员登录Azure门户
  2. 在左侧导航栏,单击Azure Active Directory > 企业应用程序 > 所有应用程序

    Azure Active Directory
  3. 单击新建应用程序

    新建应用程序
  4. 添加应用程序页面下的从库中添加搜索区域,输入Alibaba Cloud Service(Role-based SSO)并单击选择。

    Alibaba Cloud Service(Role-based SSO)
  5. 单击添加

    添加
  6. Alibaba Cloud Service(Role-based SSO)页面下,单击左侧导航栏下的属性,复制并保存对象ID

    对象ID

配置AAD SSO

  1. 管理员登录Azure门户
  2. 在左侧导航栏,单击Azure Active Directory > 企业应用程序 > 所有应用程序
  3. 名称列表下,单击Alibaba Cloud Service(Role-based SSO)
  4. 在左侧导航栏,选择单一登录

    单一登录
  5. 选择单一登录方法页面下,单击SAML

    SAML
  6. 设置SAML单一登录页面进行配置。
    1. 在页面左上角,单击上传元数据文件,选择文件后,单击添加

      上传元数据文件
      说明 您可以通过以下URL获取元数据文件: https://signin.aliyun.com/saml-role/sp-metadata.xml
    2. 用户属性和声明区域,单击编辑图标。

      用户属性和声明
    3. 单击添加新的声明,设置以下配置后,单击保存
      • 名称区域下,输入Role
      • 命名空间区域下,输入https://www.aliyun.com/SAML-Role/Attributes
      • 区域下,选择属性
      • 源属性区域下,从下拉列表中选择user.assignedroles

      管理用户声明
    4. 重复上述步骤,添加一个新的声明。
      • 名称区域下,输入RoleSessionName
      • 命名空间区域下,输入https://www.aliyun.com/SAML-Role/Attributes
      • 区域下,选择属性
      • 源属性区域下,从下拉列表中选择user.userprincipalname
    5. SAML签名证书区域下的联合元数据XML,单击下载

      下载联合元数据XML
    6. 安装Alibaba Cloud Service(Role-based SSO)区域下,复制登录URLAzure AD标识符注销URL

      安装 Alibaba Cloud Service (Role-based SSO)

在阿里云配置角色SSO

  1. 云账号(Account1)登录RAM控制台
  2. 在左侧导航栏,单击SSO管理
  3. 角色SSO页签下,单击新建身份提供商
  4. 输入提供商名称AAD备注
  5. 元数据文档处,单击上传文件
    说明 上传上述步骤中在SAML 签名证书区域下载的联合元数据XML
  6. 单击确定
  7. 创建身份提供商后,单击前往新建RAM角色
  8. 输入角色名称AADrole备注
  9. 在下拉列表中选择身份提供商AAD,单击完成
    说明
    • 您可以根据需要为RAM角色添加权限。关于如何为RAM角色添加权限,请参见为RAM角色授权
    • 当身份提供商和对应的RAM角色后,请保存好对应的ARN。关于如何查看ARN,请参见查看RAM角色基本信息

将阿里云RAM角色与AAD用户进行关联

  1. 在AAD中创建角色。
    1. 用户(u2)登录AAD Graph浏览器
    2. 单击修改权限

      Graph浏览器
    3. 从下拉列表中选择以下权限并单击修改权限

      修改权限
      说明 修改权限后,系统会重定向到Graph浏览器。
    4. Graph浏览器页面,第一个下拉列表中选择GET,第二个下拉列表中选择beta。在搜索框中输入https://graph.microsoft.com/beta/servicePrincipals并单击运行查询

      运行查询
      说明 如果您有多个目录,您可以在查询区域输入https://graph.microsoft.com/beta/contoso.com/servicePrincipals
    5. 响应预览页签下,从Service Principal中提取出appRoles属性并保存。
       "appRoles": [
                      {
                          "allowedMemberTypes": [
                              "User"
                          ],
                          "description": "msiam_access",
                          "displayName": "msiam_access",
                          "id": "7dfd756e-8c27-4472-b2b7-38c17fc5****",
                          "isEnabled": true,
                          "origin": "Application",
                          "value": null
                      }
                  ],
      说明 您可以在查询字段中输入https://graph.microsoft.com/beta/servicePrincipals/<objectID>来定位appRoles属性,其中objectID是您在AAD属性页面保存的。
    6. 返回Graph浏览器,将第一个下拉列表改为PATCH,第二个下拉列表中选择beta。在搜索框中输入https://graph.microsoft.com/beta/servicePrincipals/<objectID>,将以下内容复制到请求正文中并选择运行查询
      { 
        "appRoles": [
          { 
            "allowedMemberTypes":[
              "User"
            ],
            "description": "msiam_access",
            "displayName": "msiam_access",
            "id": "41be2db8-48d9-4277-8e86-f6d22d35****",//appRoles的ID
            "isEnabled": true,
            "origin": "Application",
            "value": null
          },
          { "allowedMemberTypes": [
              "User"
          ],
          "description": "Admin,AzureADProd",
          "displayName": "Admin,AzureADProd",
          "id": "68adae10-8b6b-47e6-9142-6476078c****",//ID生成器(例如:GUID生成器)实时生成的ID
          "isEnabled": true,
          "origin": "ServicePrincipal",
          "value": "acs:ram::187125022722****:role/aadrole,acs:ram::187125022722****:saml-provider/AAD"//身份提供商和RAM角色的ARN
          }
        ]
      }
      说明 您可以根据需要创建多个RAM角色,AAD将在SAML中将这些角色作为声明值进行传送,但是您只能在msiam_access后添加新的角色。
  2. 将RAM角色添加到用户(u2)中。
    1. 管理员登录Azure门户
    2. 在左侧导航栏,单击Azure Active Directory > 企业应用程序 > 所有应用程序
    3. 名称列表下,单击Alibaba Cloud Service(Role-based SSO)
    4. 在左侧导航栏,单击用户和组
    5. 单击左上角的添加用户

      添加用户
    6. 单击用户,从用户列表中选择用户(u2),单击选择

      选择用户
    7. 单击分配
    8. 查看分配的角色。

      查看分配的角色
      说明 如果您分配了用户(u2),创建好的RAM角色会自动附加给用户。如果您创建了多个角色,您需要根据需要合理分配角色。如果您需要完成AAD与多个阿里云账号的角色SSO,请重复上述配置步骤。

测试角色SSO

  1. 管理员登录Azure门户
  2. 在左侧导航栏,单击Azure Active Directory > 企业应用程序 > 所有应用程序
  3. 名称列表下,单击Alibaba Cloud Service(Role-based SSO)
  4. 在左侧导航栏,选择单一登录
  5. 使用Alibaba Cloud Service(Role-based SSO)的Validate单一登录区域下,单击Validate

    Validate
    说明 用户(u2)登录前,需要先被添加到用户组中。
  6. 选择作为当前用户登录

    作为当前用户登录
  7. 选择账户页面下,选择用户(u2)。

    选择账户

执行结果

以下界面出现,表示角色SSO成功。


角色SSO成功