企业身份认证系统与华为云身份提供商的对接案例

举报
云里来云里去 发表于 2020/04/08 09:45:12 2020/04/08
【摘要】 总览当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(Identity Provider,简称IdP)功能。通过该功能,企业用户不用在华为云中重建IAM用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。在...

总览

当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(Identity Provider,简称IdP)功能。通过该功能,企业用户不用在华为云中重建IAM用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。在本说明中,将通过一个身份提供商的Demo项目,指导用户快速开发本地的Idp系统,并完成华为云的身份提供商对接。

前提条件

  • 企业拥有自己的身份认证系统

  • 企业管理员在华为云上注册了可用的账号。

流程说明

企业开发自己的身份提供商系统,对接华为云的步骤为:

  1. 用户基于本指导完成身份提供商系统的物料准备及配置。

  2. 用户运行身份提供商系统,提供身份提供商服务。

  3. 用户通过华为云账户,完成添加身份提供商,并获取跳转登录链接。

  4. 用户在浏览器中打开从华为云上获取到的登录链接,浏览器向华为云发起单点登录请求。

  5. 华为云根据登录链接中携带的信息,查找IAM身份提供商中对应的Metadata文件,构建SAML Request,发送给浏览器。

  6. 浏览器响应后,转发SAML Request给用户身份提供商系统。

  7. 身份提供商系统判断用户是否完成身份认证,如果没有,将重定向到已有身份认证系统,完成用户身份认证,构建携带用户信息的SAML断言,向浏览器发送SAML Response。

  8. 浏览器响应后转发SAML Response给华为云。

  9. 华为云从SAML Response中取出断言,并根据已配置的身份转换规则映射到具体的IAM用户组,颁发Token。

  10. 用户完成单点登录,根据权限访问华为云。

物料准备

  1. 获取华为云的SPMetadata。访问网址:https://auth.huaweicloud.com/authui/saml/metadata.xml(推荐使用Chrome浏览器),下载华为云元数据文件,并设置文件名称,例如“SP-metadata.xml”。

  2. 通过openssl命令,生成私钥文件private.key。

    openssl genrsa -des3 -out private.key 2048

    设置密码:

    Enter pass phrase for private.key:

  3. 命令生成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

  4. 通过以下方式获取jks文件。

    1. 在浏览器打开以下地址:https://myssl.com/cert_convert.html

    2. 选择原格式和目标格式,分别上传2生成的私钥文件和3生成的证书文件。

    3. 输入私钥密码并设置jks文件密码。

    4. 单击提交,自动下载jks文件。

  5. 构建IdPMetadata文件

    1. 编辑metadata中的主体信息

      Id:xxx

      Entity id:xxx

    2. 修改Idp服务跳转地址和端口

    3. 替换IdPMetadata中签名证书和加密证书为生成的ca.crt中的内容

    4. 保存为IdPMetadata.xml文件

  6. 替换物料。将生成的物料ca.crt ,IdPMeatadata.xml,SPMetadata.xml,test-idpjks文件添加到

    {项目地址}\IdPDemo\src\main\resources路径下

  7. 编辑配置文件

   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系统

  1. 当前demo已实现idp跳转的主体逻辑,用户可以参考demo自行实现。

    包括SAMLRequest解析,SAMLRequest验签,生成SAMLResponse,SAMLResponse签名和发送SAMLResponse。

  2. 用户在idp-demo的基础上,实现身份认证逻辑。本demo中提供过滤器实现。

    所有idp的跳转请求,应该在通过企业身份认证系统认证通过后,才能完成跳转,需要在过滤器中判断当前请求中是否含有用户认证信息,如果没有,则需要重定向到企业身份认证系统,认证后再次请求跳转。

  3. 在返回的SAMLResponse中添加属性信息,如添加xUserId信息。

    说明:“xUserID”“test123”和分别对应在IAM创建身份提供商时,身份转换规则中的“属性”和“值”,需要自行设置。

  4. 开发完成后,启动项目,进行本地服务启动测试

    正确响应,则返回成功。


对接华为云身份提供商

  1. 进入IAM控制台,在左侧导航窗格中,单击“身份提供商>创建身份提供商”。

  2. 在“创建身份提供商”窗口中填写参数,例如将身份提供商命名为“IdP-Demo”。

  3. 单击“确定”,创建身份提供商成功。

  4. 配置身份提供商信息。单击身份提供商中“操作”列的“修改”。

  5. 单击“上传文件”左侧的“···”,选择获取的企业IdP的元数据文件

  6. 单击“上传文件”。弹出页面显示系统提取到的元数据,单击“确定”。

  7. 单击“确定”,身份提供商配置完成。

  8. 在“查看身份提供商”页面,复制登录链接,并在浏览器中打开。

  9. 跳转至企业身份认证系统登录,若已登录,则直接跳转进入华为云,配置完成。

  10. 监控后台console,打印日志符合预期。

  11. 通过插件SAML Message Decoder,解析SAMLResponse,获取属性字段信息。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。