更新时间:2024-12-18 GMT+08:00
分享

同步OneAccess组织用户

应用身份管理服务OneAccess是华为云提供的应用身份管理服务,具备集中式的身份管理、认证和授权能力,保证企业用户根据权限访问受信任的云端和本地应用系统,并对异常访问行为进行有效防范。在AstroZero中集成OneAccess,可直接使用OneAccess来管理AstroZero应用中的业务用户。

前提条件

在AstroZero中集成OneAccess前,请先完成如下配置。

  1. 购买OneAccess实例。

    在使用应用身份管理服务前,需要先购买OneAccess实例,详情请参见管理员购买实例

  2. 在OneAccess中添加组织(对应AstroZero的角色)和用户(对应AstroZero的业务用户)。

    组织用于对企业人员进行管理,一个公司或部门可对应一个组织,将用户添加到组织中可实现对用户的批量管理和授权。顶层组织作为根节点,可以在其下添加多个子组织与用户,同时,在子组织下可继续添加多层组织与用户。如何添加组织及用户,请参见管理员添加组织管理员添加用户

  3. 在OneAccess实例管理门户中添加应用,通过配置OneAccess集成认证信息,可建立OneAccess对AstroZero应用的信任关系。

    添加应用并授权的详情操作,请参见添加应用授权管理。其中,授权的账号为2中添加的用户。

  4. 在OneAccess中配置应用的信息,确保用户可以通过OneAccess登录应用。

    1. 参考认证集成中操作,完成认证配置。
      当前AstroZero和OneAccess对接,支持“Oauth2”、“SAML2”和“CAS”三种认证集成方式。
      • OAuth2:OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问存储在资源服务器上的信息,而不需要将用户名和密码提供给第三方应用。
      • SAML2:安全断言标记语言(Secturity Assertion Markup Language 2.0,简称SAML 2.0)是一个由一组协议组成,用来传输安全声明的XML框架。SAML2.0是由标准化组织OASIS提出的用于安全操作的标准,是很多身份提供商 (IdP)使用的一种开放标准。关于SAML2.0的详细描述,请参见SAML 2.0技术概述
      • CAS:CAS是一个基于HTTP2、HTTP3的协议,要求每个组件都可以通过特定的URL访问。通过CAS协议将华为OneAccess作为服务提供商,使第三方应用的用户账号数据可以访问OneAccess。

      例如,设置为“OAuth2”协议时,配置示例如图1所示。

      图1 设置认证协议
    2. 获取鉴权信息。

      在“通用信息 > 接口认证凭证”下,单击“启用”,记录“ClientId”和“ClientSecret”的值,在1中会使用到。

      图2 获取鉴权信息
      • ClientSecret是校验开发者身份的密码,具备高安全性,切勿将其直接提供给第三方开发者或直接存储在代码中。
      • OneAccess不存储ClientSecret,获取ClientSecret后,请妥善保管。
      • 启用后单击“重置”,可重置ClientSecret。重置后的ClientSecret即时生效,所有使用原ClientSecret的接口将全部失效,请谨慎重置。
    3. 参考授权内置API产品中操作,授予应用API权限。
    4. 参考“授权管理 > 应用账号 > 授权策略”中操作,授权用户设置。
    5. 参考“对象模型 > 应用机构模型”中操作,开启应用机构,同步机构数据至企业应用。
      图3 开启应用机构

配置OneAccess集成认证信息

  1. 在AstroZero配置OneAccess集成认证信息。

    1. 参考登录管理中心中操作,登录AstroZero管理中心。
    2. 在左侧导航栏中,选择“系统管理 > 统一身份认证”。
    3. 在预置认证中,单击“OneAccess”图标。
    4. 配置标签、名称和图标,单击“下一步”。
      表1 基本配置参数说明

      参数

      说明

      标签

      新建OneAccess集成认证的标签,用于展示使用。

      名称

      新建OneAccess集成认证的名称,命名需保证全局唯一。地址会根据此名称判断是哪个具体账号的认证。命名要求如下:

      • 长度不能超过64个字符。
      • 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。

      Logo

      新建OneAccess集成认证的图标。

    5. 在“认证协议”中,根据4中OneAccess应用设置的认证方式,选择Oauth2、SAML2或CAS,并设置认证源信息,单击“下一步”。
      表2 “Oauth2”协议认证配置字段说明

      参数

      说明

      认证协议

      AstroZero和OneAccess之间的认证协议。

      OneAccess实例的域名

      登录OneAccess实例控制台,单击“用户访问域名”后的复制,可获取用户访问域名,详情请参见获取用户访问域名

      认证地址

      设置认证登录地址,Oauth方式认证地址为“https://{host}/api/v1/oauth2/authorize”,其中“{host}”为OneAccess实例的域名。

      获取access_token地址

      获取access_token的请求地址,配置为“https://{host}/api/v1/oauth2/token”,其中“{host}”为OneAccess实例的域名,“access_token”为访问API接口的令牌。

      获取用户信息地址

      获取用户信息的请求地址,配置为“https://{host}/api/v1/oauth2/userinfo”,其中“{host}”为OneAccess实例的域名。

      登出地址

      AstroZero登出之后,跳到服务端的登出地址,使服务端登出,建议配置登出地址。支持在登出地址中添加变量“{redirect}”,登出时替换为当前配置的页面地址。

      示例:https://{host}/api/v1/logout?redirect_url={redirect}

      是否登录时自动创建用户

      用户首次登录时,如果系统中不存在此用户,是否自动创建用户。

      用户权限

      当使用OneAccess用户登录时,如果用户不存在,且开启了自动创建用户,此权限将作为创建用户的默认权限。

      是否校验state

      是否需要检验state参数。

      AstroZero在响应请求后,将重定向到OneAccess,此时OneAccess根据该配置决定是否校验state参数一致性(即cookie或session里的state)。开启校验后,state不一致,则AstroZero拒绝此请求,且不再发起换取access_token的请求。如果一致,则流程正常运行。

      建议开启校验state,以防止CSRF攻击。

      表3 “CAS”协议认证配置字段说明

      参数

      说明

      认证协议

      AstroZero和OneAccess之间的认证协议。

      OneAccess实例的域名

      登录OneAccess实例控制台,单击“用户访问域名”后的复制,可获取用户访问域名,详情请参见获取用户访问域名

      认证地址

      设置认证登录地址。CAS方式认证地址为“https://{host}/api/v1/cas/login”,其中“{host}”为OneAccess实例的域名。

      验证票据地址

      验证票据并获取用户属性信息的地址,当前仅支持CAS2.0和CAS3.0。

      CAS验证票据地址配置为“https://{host}/api/v1/cas/p3/serviceValidate”,其中“{host}”为OneAccess实例的域名。

      登出地址

      AstroZero登出之后,跳到服务端的登出地址,使服务端登出,建议配置登出地址。支持在登出地址中添加变量“{redirect}”,登出时替换为当前配置的页面地址。

      示例:https://{host}/api/v1/logout?redirect_url={redirect}

      是否登录时自动创建用户

      用户首次登录时,如果系统中不存在此用户,是否自动创建用户。

      用户权限

      当使用OneAccess用户登录时,如果用户不存在,且开启了自动创建用户,此权限将作为创建用户的模式权限。

      表4 “SAML2”协议认证配置字段说明

      参数

      说明

      认证协议

      AstroZero和OneAccess之间的认证协议。

      OneAccess实例的域名

      登录OneAccess实例控制台,单击“用户访问域名”后的复制,可获取用户访问域名,详情请参见获取用户访问域名

      登出地址

      AstroZero登出之后,跳到服务端的登出地址,使服务端登出,建议配置登出地址。支持在登出地址中添加变量“{redirect}”,登出时替换为当前配置的页面地址。

      示例:https://{host}/api/v1/logout?redirect_url={redirect}

      是否登录时自动创建用户

      用户首次登录时,如果系统中不存在此用户,是否自动创建用户。

      用户权限

      当使用OneAccess用户登录时,如果用户不存在,且开启了自动创建用户,此权限将作为创建用户的模式权限。

      是否校验state

      是否需要检验state参数。

      AstroZero在响应请求后,将重定向到OneAccess,此时OneAccess根据该配置决定是否校验state参数一致性(即cookie或session里的state)。开启校验后,state不一致,则AstroZero拒绝此请求,且不再发起换取access_token的请求。如果一致,则流程正常运行。

      建议开启校验state,以防止CSRF攻击。

      客户端证书

      SAML客户端签名证书公钥。

      自签名证书公钥如“saml.crt”,获取方法如下,该方法创建的证书通常只适用于测试场景。

      1. 在linux机器上执行如下命令生成密钥文件“saml.key”。
        openssl genrsa -out saml.key 2048

        命令执行后将在当前目录生成一个“saml.key”的私钥文件。

        生成的密钥格式必须为:

        -----BEGIN PRIVATE KEY-----
        ……………………………………………..
        -----END PRIVATE KEY-----
      2. 用上一步的密钥文件去签发生成文件“saml.csr”。
        openssl req -new -key saml.key -out saml.csr
      3. 根据提示依次输入国家、地区、组织、邮箱及common name(用户名或域名,如果为了https申请,该参数值必须和域名相同,否则会引发浏览器警报),按回车键确认。
      4. 执行如下命令,用之前生成的文件,去签发生成自己的证书文件“saml.crt”。
        openssl x509 -req -days 365 -in saml.csr -signkey saml.key -out saml.crt

        生成的证书格式必须为:

        -----BEGIN CERTIFICATE-----
        ……………………………………………………………
        -----END CERTIFICATE-----

      客户端证书私钥

      SAML签名证书私钥。

      自签名证书私钥为生成客户端证书中产生的“saml.key”文件,该方法创建的证书通常只适用于测试场景。

      Idp Metadata文件

      SAML服务端的元数据文件,需要到SAML身份提供商(Identity Provider,简称IdP)获取,获取方法请参考获取IdP元数据metadata

    6. 在“身份源配置”中,配置对端鉴权ID和对端鉴权密钥,单击“保存”。

      对端鉴权ID和对端鉴权密钥为4.b中,获取的OneAccess应用的ClientId和ClientSecret。

    7. 单击“去同步”,同步组织机构和用户信息,支持立即同步和设置定时同步任务。
      图4 同步身份认证
      • 立即同步
        1. 单击“同步部门”下的“立即同步”,在弹框中,若勾选“同时清除未包含在同步中的部门”表示在AstroZero中清除OneAccess已删除的部门,单击“确定”。
        2. 单击“同步用户”下的“立即同步”,在弹框中,勾选“同时清除未包含在同步中的用户”表示在AstroZero中清除OneAccess已删除的用户,单击“确定”。
      • 设置定时任务实现自动同步
        1. 在“同步部门”中,打开“开启自动同步”开关,单击“同步部门”下的“自动同步设置”,设置首次同步时间、执行周期,勾选“同时清除未包含在同步中的部门”表示在AstroZero中清除OneAccess已删除的部门,单击“确定”。
        2. 在“同步用户”中,打开“开启自动同步”开关,单击“同步用户”下的“自动同步设置”,设置首次同步时间、执行周期,勾选“同时清除未包含在同步中的用户”表示在AstroZero中清除OneAccess已删除的用户,单击“确定”。

      系统会同步OneAccess机构组织信息到AstroZero业务配置中心的“组织用户 > 组织机构”中,并同步OneAccess用户信息到AstroZero业务配置中心的“组织用户 > 用户管理”中。

      这里同步的组织级用户信息是OneAccess全局组织用户,和与AstroZero关联的OneAccess应用中的添加的机构及账号非一对一关系。全局用户只有添加了OneAccess的应用授权后,才能够通过认证并登录。所以同步过来的用户不是全部都能登录,只有在OneAccess的应用中授权了它才能成为一个能认证登录的账号。

    8. (可选)在“认证配置”菜单下,单击“下载”,下载SP Metadata文件,后续需要配置该文件到身份提供商中。
      1.e认证协议选择“SAML2”时,您需要执行该步骤。
      图5 下载SP Metadata文件

  2. 在OneAccess中,配置认证信息。

    1. 进入OneAccess实例管理门户,在导航栏中,选择“资源 > 应用”。
    2. 单击之前添加的应用,在应用信息页面单击应用图标。
    3. 单击左侧列表中的“认证集成”,配置认证参数。
      • 1.e认证协议配置的为“Oauth2”或“CAS”,请参考图6表5设置。
        图6 配置认证参数
        表5 参数说明

        参数

        说明

        标准授权模式

        标准授权模式是最常用,安全性也最高的一种认证模式,适用于有后端的Web应用。该模式下,授权码通过前端传送,令牌存储在后端,可以避免令牌泄漏,而且所有与资源服务器的通信都在后端完成。

        简化授权模式

        适用于没有后端的Web应用,必须将令牌存储在前端,用于一些对安全要求不高的场景。与标准授权模式相比,省略了获取授权码code环节。

        资源所有者密码模式

        适用于用户对客户端高度信任的场景,用户将用户名和密码提供给客户端,由客户端申请令牌。

        客户端密码模式

        适用于没有前端的应用,由客户端发起申请令牌请求。

        回调地址

        成功授权后的回调地址,设置为“https://{astrozerohost}/baas/auth/v1.0/idp/authorize/{认证设置名称}”。

        其中,“astrozerohost”为AstroZero的环境域名,认证设置名称为1.d中设置的名称,需带命名空间。

        必填,认证时,OneAccess会校验AstroZero地址。

        退出跳转URL

        应用退出地址,用户在OneAccess注销会话后返回绑定的地址。

        Access Token有效期

        授权令牌的有效期,默认2小时,单位为秒。

        Refresh Token有效期

        刷新令牌的有效期,默认为0,即不支持Refresh Token。当Access Token过期后,用户可通过Refresh Token实现自动更新令牌。

        实现自动更新令牌的前提是,设置Refresh Token有效期大于Access Token的有效期。

      • 1.e认证协议配置的为“SAML”,请单击“上传文件”,上传1.h中下载的SP Metadata文件。

  3. 登录测试,使用4.d中,已授权用户访问业务应用。

    例如,访问默认应用Portal页,地址为“https://{astrozerohost}/baas/auth/v1.0/idp?client-name={认证设置名称}&redirect=https://{astrozerohost}/app/portal.html”。

    其中,“astrozerohost”为AstroZero的环境域名,“认证设置名称”为1.d中设置的名称,带命名空间。redirect值可以改为登录后访问的页面地址,需要url编码。

相关文档