教程 2:应用使用 EnOS 账号登录 - SAML 协议

本篇文章以 Jenkins 遵守 SAML 协议通过 SSO Server 登录为例:

前提条件

  • 拥有一个EnOS系统管理员账号,拥有对单点登录全部操作权限,参考策略,角色,与权限
  • 拥有一个EnOS OU 管理员账号,由系统管理员授权拥有对单点登录的操作权限,参考策略,角色,与权限
  • 拥有 Jenkins 管理员账号,开通 Jenkins 管理员账号请联系运维人员。

步骤

步骤一:在 SSO Server 上注册 jenkins 客户端

  1. 在 EnOS 管理控制台中选择 单点登录 > 客户端配置
  2. 点击 新建客户端,提供如下信息:
    • 客户端配置信息:
      • 客户端协议:SMAL。
      • 客户端ID:enos-smal
      • Login Redirect URLhttp://localhost:8090/securityRealm/finishLogin (SAML 协议中 SP 测接收认证结果的端点 AssertionConsumerService
      • Logout Redirect URLhttp://localhost:8090/samlLogout (SAML 协议中 SP 侧的 SLO 端点 SingleLogoutService
      • Base URL
      • 默认身份提供方:EnOS 管理控制台
      • 客户端签名:开启
    • Scope 配置:选择 emailprofile
    • SAML 密钥:点击 smal_key ,生成 SAML 密钥。
  3. 点击 保存 ,新建客户端完成。

步骤二:配置 Jenkins 客户端

  1. 下载安装 Jenkins-saml
  2. 下载安装 Jenkins-saml 成功后,登录Jenkins客户端,进入路径 Manage Jenkins > Configure Global Security,勾选 Enable security,在 Security Realm 栏勾选 SAML 2.0,并填写以下项:
    • IdP MetaData URLhttps://sso登录环境域名/ssoserver/oauth/saml/descriptor,填写完成后,点击 Validate IdP MetaData URL,验证完成后,请继续填写 LogOut URL
    • LogOut URLhttps://sso登录环境域名/ssoserver/oauth/saml/logout?clientId=http://localhost:8080/jenkins/securityRealm/finishLogin
    • Data Binding Method:选择 HTTP-POST
  3. 填写完成后,点击Apply,点击Save

步骤三:验证登录

登录 Jenkins客户端,地址自动跳转到:https://sso登录环境域名/auth-service/login 登录页面。

在客户端(基于 SAML 实现)代码中加入对应配置

如需配置其他客户端,可以在客户端代码中加入对应配置:

  • 客户端的 Entity Id:即步骤一内的 客户端ID
  • 客户端的:AssertionConsumerService:即步骤一内的 Login Redirect URL
  • 客户端的 SingleLogoutService的地址:即步骤一内的 Logout Redirect URL
  • SSO Server的metadata xml:https://beta-enos-authz-service-cn4.eniot.io/ssoserver/oauth/saml/descriptor的地址上。客户端代码可以参照其上的metadata进行配置。

验证登录

登录客户端,地址自动跳转到 https://sso登录环境域名/auth-service/login,在此以EnOS账号登录成功后,客户端就会依照 SAML 协议取得 Auth Token 并完成登录。