企业身份认证系统与华为云身份提供商的对接案例
总览
当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(Identity Provider,简称IdP)功能。通过该功能,企业用户不用在华为云中重建IAM用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。在本说明中,将通过一个身份提供商的Demo项目,指导用户快速开发本地的Idp系统,并完成华为云的身份提供商对接。
前提条件
企业拥有自己的身份认证系统
企业管理员在华为云上注册了可用的账号。
流程说明
企业开发自己的身份提供商系统,对接华为云的步骤为:
用户基于本指导完成身份提供商系统的物料准备及配置。
用户运行身份提供商系统,提供身份提供商服务。
用户通过华为云账户,完成添加身份提供商,并获取跳转登录链接。
用户在浏览器中打开从华为云上获取到的登录链接,浏览器向华为云发起单点登录请求。
华为云根据登录链接中携带的信息,查找IAM身份提供商中对应的Metadata文件,构建SAML Request,发送给浏览器。
浏览器响应后,转发SAML Request给用户身份提供商系统。
身份提供商系统判断用户是否完成身份认证,如果没有,将重定向到已有身份认证系统,完成用户身份认证,构建携带用户信息的SAML断言,向浏览器发送SAML Response。
浏览器响应后转发SAML Response给华为云。
华为云从SAML Response中取出断言,并根据已配置的身份转换规则映射到具体的IAM用户组,颁发Token。
用户完成单点登录,根据权限访问华为云。
物料准备
获取华为云的SPMetadata。访问网址:https://auth.huaweicloud.com/authui/saml/metadata.xml(推荐使用Chrome浏览器),下载华为云元数据文件,并设置文件名称,例如“SP-metadata.xml”。
通过openssl命令,生成私钥文件private.key。
openssl genrsa -des3 -out private.key 2048
设置密码:
Enter pass phrase for private.key:
命令生成crt证书文件:
openssl req -new -x509 -key private.key -out ca.crt -days 3650
补充证书信息:
示例:
Country Name (2 letter code) [XX]:cnState or Province Name (full name) []:shanxiLocality Name (eg, city) [Default City]:xianOrganization Name (eg, company) [Default Company Ltd]:hcOrganizational Unit Name (eg, section) []:hcCommon Name (eg, your name or your server's hostname) []:test-idpEmail Address []:test@163.com
通过以下方式获取jks文件。
在浏览器打开以下地址:https://myssl.com/cert_convert.html。
输入私钥密码并设置jks文件密码。
单击提交,自动下载jks文件。
构建IdPMetadata文件
编辑metadata中的主体信息
Id:xxx
Entity id:xxx
修改Idp服务跳转地址和端口
替换IdPMetadata中签名证书和加密证书为生成的ca.crt中的内容
保存为IdPMetadata.xml文件
替换物料。将生成的物料ca.crt ,IdPMeatadata.xml,SPMetadata.xml,test-idpjks文件添加到
{项目地址}\IdPDemo\src\main\resources路径下
编辑配置文件
idpMetadataFilePath={IdPMetadata.xml绝对路径}keystorePath={test-idp.jsk绝对路径}keystorePass={指导书物料准备的步骤二中的新文件密码}aliasName={指导书物料准备的步骤三中的证书的Common Name}spMetadataPath={ SPMetadata.xml绝对路径}openssl genrsa -des3 -out private.key 2048
8. 手动添加maven依赖
解压opensaml.rar(见附件),获取opensaml依赖包,添加到本地maven仓库。
基于Idp-Demo开发Idp系统
当前demo已实现idp跳转的主体逻辑,用户可以参考demo自行实现。
包括SAMLRequest解析,SAMLRequest验签,生成SAMLResponse,SAMLResponse签名和发送SAMLResponse。
用户在idp-demo的基础上,实现身份认证逻辑。本demo中提供过滤器实现。
所有idp的跳转请求,应该在通过企业身份认证系统认证通过后,才能完成跳转,需要在过滤器中判断当前请求中是否含有用户认证信息,如果没有,则需要重定向到企业身份认证系统,认证后再次请求跳转。
在返回的SAMLResponse中添加属性信息,如添加xUserId信息。
说明:“xUserID”“test123”和分别对应在IAM创建身份提供商时,身份转换规则中的“属性”和“值”,需要自行设置。
开发完成后,启动项目,进行本地服务启动测试
正确响应,则返回成功。
对接华为云身份提供商
进入IAM控制台,在左侧导航窗格中,单击“身份提供商>创建身份提供商”。
在“创建身份提供商”窗口中填写参数,例如将身份提供商命名为“IdP-Demo”。
单击“确定”,创建身份提供商成功。
配置身份提供商信息。单击身份提供商中“操作”列的“修改”。
单击“上传文件”左侧的“···”,选择获取的企业IdP的元数据文件。
单击“上传文件”。弹出页面显示系统提取到的元数据,单击“确定”。
单击“确定”,身份提供商配置完成。
在“查看身份提供商”页面,复制登录链接,并在浏览器中打开。
跳转至企业身份认证系统登录,若已登录,则直接跳转进入华为云,配置完成。
监控后台console,打印日志符合预期。
通过插件SAML Message Decoder,解析SAMLResponse,获取属性字段信息。
- 点赞
- 收藏
- 关注作者
评论(0)