本文重点介绍两种常见的单点登录协议,即OIDC(OpenID Connect)协议和SAML 2.0(Security Assertion Markup Language)协议,以及如何在JumpServer开源堡垒机上完成与Okta的集成对接。
一、概要
■ 单点登录
单点登录(Single Sign On,简称为SSO)是一种身份验证方案,允许用户使用单一的认证凭证访问到多个独立的软件系统中的任意一个,减少了用户重复认证的步骤,并且统一了不同软件间的用户认证管理。
常见的单点登录认证协议包括: OIDC、OAuth 2.0、SAML 2.0、CAS等。
■ Okta
Okta是一家美国高新技术公司,其软件的主要功能是将一家公司及其员工使用的大量软件应用整合在一起,能够让员工很方便地使用单一、安全的账号登录他们工作所需要使用的各种自有及第三方的网络服务,并且通过细粒度的多租户身份验证确保最终用户的访问体验。
■ OIDC
OIDC(OpenID Connect)在OAuth 2.0上构建了一个身份层,是一个基于OAuth 2.0协议的身份认证标准协议。OIDC使用OAuth 2.0的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端(例如服务端应用、移动APP、JavaScript应用),且完全兼容OAuth 2.0协议。
■ SAML
SAML(Security Assertion Markup Language)是一种用于安全性断言的标记语言,目前的最新版本是2.0,是Web浏览器用来通过安全令牌启用单点登录(SSO)的标准协议。
■ OIDC协议与SAML 2.0协议之间的相同点与不同点:
如果JumpServer需要与Okta平台对接,需要在官网进行注册,Okta平台的官网地址为:https://www.okta.com/;
注册成功后,Okta会发送一封电子邮件,邮件内容包含独立的平台域名、用户名和临时密码信息。
三、SAML 2.0协议对接
■ 对接步骤:Okta端
配置相应SAML信息;
Single sign on URL(即Okta认证成功的回调地址):http[s]/host:port/core/auth/saml2/callback/;
Audience URI(应用堡垒机的标识):http[s]/host:port/core/auth/saml2/login/;
需要配置证书,输入以下代码生成一个密钥证书,后续JumpServer堡垒机也会使用到这个密钥证书;
$ openssl genrsa -out server.key 2048 # 这个生成的是 私钥
$ openssl req -new -x509 -days 3650 -key server.key -out server.crt -subj "/C=CN/ST=mykey/L=mykey/O=mykey/OU=mykey/CN=domain1/CN=domain2/CN=domain3" # 这个是证书
填写Single Logout URL(即Okta注销地址),一般为:http[s]/host:port/login/signout;
若上述URL配置有误,可通过以下图片所示方式获取正确地址,并填入“Single Logout URL”处;
如果想修改这里的信息,将JumpServer设置为同步修改即可,然后拉到页面底部,点击“Next”按钮;
创建应用成功后,在应用界面找到“SAML Signing Certificates”选项卡,选择状态为“Active”的记录,在“Action”菜单中点击“View IdP metadata”选项;
将弹出的浏览器框地址栏中的地址保存下来,以便后续配置JumpServer;
■ 对接步骤:JumpServer端
将对接Okta端操作中的第6步(若上述第6步跳过,则返回第6步生成密钥证书部分,执行命令获取证书)生成的密钥证书上传到JumpServer堡垒机,并把第10步生成的URL地址,填写在“IDP metadata URL”中,即可完成JumpServer端的配置。
四、OIDC-OpenID协议对接
■ 对接步骤:Okta端
App integration name(Okta端应用名称):不重复即可;
Sign-in redirect URIs(认证成功回调地址):域名更换成自己的即可;
Sign-out redirect URIs(注销用户会话后的重定向地址):选填;
■ 对接步骤:JumpServer端