同步OneAccess组织用户
应用身份管理服务OneAccess是华为云提供的应用身份管理服务,具备集中式的身份管理、认证和授权能力,保证企业用户根据权限访问受信任的云端和本地应用系统,并对异常访问行为进行有效防范。在AstroZero中集成OneAccess,可直接使用OneAccess来管理AstroZero应用中的业务用户。
前提条件
在AstroZero中集成OneAccess前,请先完成如下配置。
- 购买OneAccess实例。
在使用应用身份管理服务前,需要先购买OneAccess实例,详情请参见管理员购买实例。
- 在OneAccess中添加组织(对应AstroZero的角色)和用户(对应AstroZero的业务用户)。
组织用于对企业人员进行管理,一个公司或部门可对应一个组织,将用户添加到组织中可实现对用户的批量管理和授权。顶层组织作为根节点,可以在其下添加多个子组织与用户,同时,在子组织下可继续添加多层组织与用户。如何添加组织及用户,请参见管理员添加组织和管理员添加用户。
- 在OneAccess实例管理门户中添加应用,通过配置OneAccess集成认证信息,可建立OneAccess对AstroZero应用的信任关系。
- 在OneAccess中配置应用的信息,确保用户可以通过OneAccess登录应用。
- 参考认证集成中操作,完成认证配置。
当前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所示。
- 获取鉴权信息。
在“通用信息 > 接口认证凭证”下,单击“启用”,记录“ClientId”和“ClientSecret”的值,在1中会使用到。
图2 获取鉴权信息
- ClientSecret是校验开发者身份的密码,具备高安全性,切勿将其直接提供给第三方开发者或直接存储在代码中。
- OneAccess不存储ClientSecret,获取ClientSecret后,请妥善保管。
- 启用后单击“重置”,可重置ClientSecret。重置后的ClientSecret即时生效,所有使用原ClientSecret的接口将全部失效,请谨慎重置。
- 参考授权内置API产品中操作,授予应用API权限。
- 参考“授权管理 > 应用账号 > 授权策略”中操作,授权用户设置。
- 参考“对象模型 > 应用机构模型”中操作,开启应用机构,同步机构数据至企业应用。
图3 开启应用机构
- 参考认证集成中操作,完成认证配置。
配置OneAccess集成认证信息
- 在AstroZero配置OneAccess集成认证信息。
- 参考登录管理中心中操作,登录AstroZero管理中心。
- 在左侧导航栏中,选择“系统管理 > 统一身份认证”。
- 在预置认证中,单击“OneAccess”图标。
- 配置标签、名称和图标,单击“下一步”。
表1 基本配置参数说明 参数
说明
标签
新建OneAccess集成认证的标签,用于展示使用。
名称
新建OneAccess集成认证的名称,命名需保证全局唯一。地址会根据此名称判断是哪个具体账号的认证。命名要求如下:
- 长度不能超过64个字符。
- 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。
Logo
新建OneAccess集成认证的图标。
- 在“认证协议”中,根据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”,获取方法如下,该方法创建的证书通常只适用于测试场景。
- 在linux机器上执行如下命令生成密钥文件“saml.key”。
openssl genrsa -out saml.key 2048
命令执行后将在当前目录生成一个“saml.key”的私钥文件。
生成的密钥格式必须为:
-----BEGIN PRIVATE KEY----- …………………………………………….. -----END PRIVATE KEY-----
- 用上一步的密钥文件去签发生成文件“saml.csr”。
openssl req -new -key saml.key -out saml.csr
- 根据提示依次输入国家、地区、组织、邮箱及common name(用户名或域名,如果为了https申请,该参数值必须和域名相同,否则会引发浏览器警报),按回车键确认。
- 执行如下命令,用之前生成的文件,去签发生成自己的证书文件“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。
- 在linux机器上执行如下命令生成密钥文件“saml.key”。
- 在“身份源配置”中,配置对端鉴权ID和对端鉴权密钥,单击“保存”。
对端鉴权ID和对端鉴权密钥为4.b中,获取的OneAccess应用的ClientId和ClientSecret。
- 单击“去同步”,同步组织机构和用户信息,支持立即同步和设置定时同步任务。
图4 同步身份认证
- 立即同步
- 单击“同步部门”下的“立即同步”,在弹框中,若勾选“同时清除未包含在同步中的部门”表示在AstroZero中清除OneAccess已删除的部门,单击“确定”。
- 单击“同步用户”下的“立即同步”,在弹框中,勾选“同时清除未包含在同步中的用户”表示在AstroZero中清除OneAccess已删除的用户,单击“确定”。
- 设置定时任务实现自动同步
- 在“同步部门”中,打开“开启自动同步”开关,单击“同步部门”下的“自动同步设置”,设置首次同步时间、执行周期,勾选“同时清除未包含在同步中的部门”表示在AstroZero中清除OneAccess已删除的部门,单击“确定”。
- 在“同步用户”中,打开“开启自动同步”开关,单击“同步用户”下的“自动同步设置”,设置首次同步时间、执行周期,勾选“同时清除未包含在同步中的用户”表示在AstroZero中清除OneAccess已删除的用户,单击“确定”。
系统会同步OneAccess机构组织信息到AstroZero业务配置中心的“组织用户 > 组织机构”中,并同步OneAccess用户信息到AstroZero业务配置中心的“组织用户 > 用户管理”中。
这里同步的组织级用户信息是OneAccess全局组织用户,和与AstroZero关联的OneAccess应用中的添加的机构及账号非一对一关系。全局用户只有添加了OneAccess的应用授权后,才能够通过认证并登录。所以同步过来的用户不是全部都能登录,只有在OneAccess的应用中授权了它才能成为一个能认证登录的账号。
- 立即同步
- (可选)在“认证配置”菜单下,单击“下载”,下载SP Metadata文件,后续需要配置该文件到身份提供商中。
- 在OneAccess中,配置认证信息。
- 进入OneAccess实例管理门户,在导航栏中,选择“资源 > 应用”。
- 单击之前添加的应用,在应用信息页面单击应用图标。
- 单击左侧列表中的“认证集成”,配置认证参数。
- 若1.e认证协议配置的为“Oauth2”或“CAS”,请参考图6和表5设置。
表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文件。
- 若1.e认证协议配置的为“Oauth2”或“CAS”,请参考图6和表5设置。
- 登录测试,使用4.d中,已授权用户访问业务应用。
例如,访问默认应用Portal页,地址为“https://{astrozerohost}/baas/auth/v1.0/idp?client-name={认证设置名称}&redirect=https://{astrozerohost}/app/portal.html”。
其中,“astrozerohost”为AstroZero的环境域名,“认证设置名称”为1.d中设置的名称,带命名空间。redirect值可以改为登录后访问的页面地址,需要url编码。