很多企业都在使用企业微信进行组织机构管理,同时又使用了阿里云的服务,我们不希望单独为每个员工创建一个阿里云子账号,要是能够直接使用企业微信登录就好了。这时候如何统一用户目录和实现单点登录就成了一个我们需要思考的问题。
阿里云在自己的单点登录管理(SSO)中介绍到,可以使用 SAML 协议提供单点登录管理,流程图如下:
阿里云与企业进行用户 SSO 时,阿里云是服务提供商(SP),而企业自有的身份管理系统则是身份提供商(IdP)。通过用户SSO,企业员工在登录后,将以 RAM 用户身份访问阿里云。
暂时先不用管 SAML 是什么,下文会详细讲到,这里简单理解为一种用户身份问答协议就行了。
当管理员在完成用户 SSO 的相关配置后,企业员工 Alice 可以通过上图所示的方法登录到阿里云。
- Alice 使用浏览器登录阿里云,阿里云将 SAML 认证请求返回给浏览器。
- 浏览器向 IdP 转发 SAML 认证请求。
- IdP 提示 Alice 登录,并在Alice登录成功后生成 SAML 响应返回给浏览器。
- 浏览器将 SAML 响应转发给 SSO 服务。
- SSO 服务通过SAML互信配置,验证 SAML 响应的数字签名来判断 SAML 断言的真伪,并通过 SAML断言的 NameID 元素值,匹配到对应阿里云账号中的 RAM 用户身份。
- SSO服务向浏览器返回控制台的URL。
总结一下重要的点:IdP (身份提供商),也即企业用户,有一套自己的用户目录,至于这个用户目录具体是怎样的,你是用数据库存还是 Excel 存,你是用账号密码登录还是支持第三方社会化登录,阿里云并不操心。重要的是你的用户目录需要和阿里云 RAM 用户身份建立一对一关系。具体到 SAML 协议,你需要把你的用户目录的用户唯一字段作为 NameID 传给阿里云,这样阿里云就能够知道该以哪个 RAM 用户身份登录阿里云了。
于是我们的问题就 Break Down 为下面几步:
- 为你的用户目录支持 SAML 协议
- 为你的用户目录支持企业微信登录
- 将你的用户目录和阿里云用户