零信任访问控制系统aTrust

深信服零信任访问控制系统aTrust(简称aTrust),是深信服基于零信任安全理念推出的一款以“流量身份化”和“动态自适应访问控制“为核心的创新安全产品。产品通过网络隐身、动态自适应认证、终端动态环境检测、全周期业务准入、智能权限基线、动态访问控制、多源信任评估等核心能力,满足新形势下多场景的企业应用安全访问需求。
点击可切换产品版本
知道了
不再提醒
aTrust v2.2.10
{{sendMatomoQuery("零信任访问控制系统aTrust","自定义oauth2票据认证案例")}}

自定义oauth2票据认证案例

更新时间:2023-05-05

OAuth2认证是最常见的用户认证协议,aTrust可实现跟OAuth2认证服务器对接后,用户登录aTrust或访问web应用时可跳转至OAuth2认证平台进行用户认证,用户认证成功后,可实现用户在aTrust和OAuth2认证服务器上线。

本节主要介绍了aTrust对接UniTrust oauth2.0认证服务器方案,该方案中用户源为uniTrust提供的LADP/AD域服务器,认证协议为oauth2.0。完成配置后,可实现用户访问aTrust客户端接入地址,跳转至oauth2.0认证服务器进行用户认证,并跳转至用户的应用中心。

  1. 准备工作

在配置自定义OAuth2认证服务器前,我们需要了解aTrust设备对接OAuth2认证服务器的一些信息,具体如下。

  1. aTrust对接OAuth2认证服务器,与我们aTrust设备而言,是控制中心(或综合网关)与OAuth2认证服务器做信息交付,即需保证aTrust控制中心(综合网关)与OAuth2认证服务器的网络通信是正常的。

  2. 配置前需在认证服务器平台创建一个OAuth2认证应用,并将aTrust客户端接入地址在应用上加白放通(即认证服务器的回调域名需指向我们的客户端接入地址),回调域名为https://客户端接入地址:port/passport/v1/auth/httpsOauth2。配置回调域名的作用是需要将OAuth2认证成功的用户信息返回给控制中心(或综合网关),使得用户在控制中心(或综合网关)上线。

  3. 在认证服务器上配置好OAuth2认证应用后,获取OAuth2认证的client_id和 client_secret信息,前者用于获取用户code信息,后者用户获取access_token(票据)信息。

  4. 完成上述信息确认后,从客户处获取认证服务器的地址,和OAuth2认证接口文档,用于了解对接OAuth2认证服务器的详细配置信息。

  1. 对接信息获取

在aTrust设备配置对接oauth2认证服务器前,需要客户配合完成如下操作:

  1. OAuth2认证服务器管理员配置oauth应用(客户配合操作)

  2. 配置回调域名https://客户端接入地址:port/passport/v1/auth/httpsOauth2

  3. 完成应用配置后需客户提供client_id和 client_secret信息。

  1. 用户目录配置

    aTrust管理员登录控制中心(或综合网关),进入[业务管理/用户管理]点击<新增>配置认证服务器的用户目录(支持LDAP/AD和自定义本地用户目录)。具体配置详情和说明,请点击<新增>在用户目录配置页面右上角参考配置帮助,或参考《aTrust用户手册》章节5.1用户管理,此处不再做说明。

  2. 自定义oauth认证对接配置

第一部分:基础信息配置

步骤1.完成用户目录配置后,管理员进入[系统管理/特性中心]开启<自定义oauth2.0认证>功能。

步骤2.开启自定义oauth2.0票据认证后,进入[业务管理/认证管理/认证服务器]点击<新增>选择<自定义oauth2.0认证>。

步骤3.进入自定义oauth2.0认证配置页面,完成基本信息和用户源的配置,如下。

第二部分:获取code配置

步骤1. 完成获取code配置。

根据接口文档《UniTrust 统一身份认证开放能力》,文档中章节 “3.1授权码认证-获取授权码”的接口说明表获取如下信息。

  1. 请求地址:https://unitrust.sf-atrust.com/authn/corporate/authorize

  2. 请求类型:GET

  3. 请求code需携带的参数信息,参考表内对参数的说明,如下图。

参数 说明
type

认证类型,取值范围{corporate, person}。其中corporate代表法人认证,person代表自然人认证。

本次对接填写为普通用户登录,即填写person

response_type

平台响应类型,授权码许可时,值必须为“code”

scope

权限范围,值必须包含“openid”

client_id

客户端应用标识符

redirect_uri

客户端应用回调地址,oauth认证服务器将授权码返回给atrust设备,此处填写aTrust客户端接入地址:

https://客户端接入地址:port/passport/v1/auth/httpsOauth2

步骤2.根据上述信息,完成code的配置(包括请求URL参数和解析参数),如下图。

第三部分:获取用户信息配置

根据接口文档《UniTrust 统一身份认证开放能力》,文档中章节 “3.2 授权码认证-请求令牌”和“3.5 获取个人身份信息”的接口信息表明,我们需要第一步使用code授权码,获取token令牌,第二步根据token令牌换取用户信息(即认证通过与否)。

步骤1.第一步请求设置配置。

根据接口文档中章节 “3.2 授权码认证-请求令牌”的接口描述可知,第一步获取授权码code,需要在请求头部和参数配置相关参数,具体如下。

  1. 地址和请求头部参数信息

    请求方式:post

    请求地址:https://unitrust.sf-atrust.com//authn/token

    客户端应用发送POST请求,在HTTP主体中以表单格式传递参数,并在HTTP基本认证头部中设置client_id和client_secret。即配置第一步请求时,我们需要在请求头部填写client_id和client_secret参数,如下。

参数 必选(是/否) 说明
client_id

UniTrust平台创建的oauth应用的唯一标识信息,

此处填写:qwerASDF1234ZXCVCojnh

client_secret

UniTrust平台创建的oauth应用的秘钥信息,

此处填写:QWERTdfgvbn12345iugyjh

  1. 地址和请求URL参数信息

请求方式:post

接口地址:https://unitrust.sf-atrust.com/authn/token

步骤1. 参考接口文档章节1.3.3我们可查看到获取token需携带的参数信息,参考表内对参数的说明,详情如下。

参数 必选(是/否) 说明
grant_type 授权许可类型,值必须为“authorization_code”
code 授权码,根据章节4.2.3.2获取的code信息,保存在{{env.code}},此处我们直接引用改值
redirect_uri

客户端应用回调地址,填写aTrust控制中心(或综合网关)地址。

即:https://客户端接入地址:port/passport/v1/auth/httpsOauth2

根据上述信息,我们完成第一步获取token的配置(包括请求URL参数和响应参数)将相关参数配置在第一步的请求设置中,请求认证服务器,获取token信息,具体配置如下图。

步骤2. 完成第一步请求的响应配置。

  • 完成上述配置后,可获取用户认证的token信息。此时认证服务器和aTrust平台需要互相约定一个,认证成功的条件,即响应配置。

  • 根据客户提供的接口文档信息可知,获取token成功后,access_token会获取相关信息,此时可设置认证成功的条件为access_token不为空即可。

  • 同时根据章节3的接口文档章节3.5可知,获取用户认证信息时会aTrust的请求会携带access_token信息。此时aTrust平台需要对access_token进行数据预处理(即使用env函数处理),以便保证在第一步获取的access_token,可在第二次请求用户认证信息时携带信息至认证服务器校验,获取用户认证信息。具体配置如下。

  1. 将获取到的access_token数据进行预处理,用于第二步的请求

    数据配置处理如下。

  1. 配置第一步认证成功条件为access_token等于不为空(能成功通过校验后,即可获取access_toekn,值肯定是不为空)。

步骤3. 第二步请求设置配置。

  • 第二步,请求用户信息需携带的参数信息,参考接口文档中的章节“3.5获取个人身份信息”可知,获取如下信息

  1. 请求方式:get

  2. 接口地址参数为:https://unitrust.sf-atrust.com/id/person

  • 需携带的参数有如下表。

参数 内容
access_token

第一步请求设置中,获取的access_token授权码信息,根据授权码信息在认证服务器上获取用户认证结果。

可直接引用第一步的预处理数据{{env.access_token}}

第一步已经完成了用户access_token授权码的获取,第二aTrust需携带参数access_token的授权码和client_id去换取用户认证信息,具体配置如下。

其中access_token的值,已在第一步相应配置中配置和数据预处理,故即可使用预处理的数据进行赋值,如下。

步骤4. 第二步响应配置。

完成第二步的请求设置后,此时以获取了用户认证的信息。故设备需对用户信息做校验,保证用户认证信息是正确的。根据接口文档中的章节“3.5获取个人身份信息”可知,用户认证信息获取成功后,正确返回时会携带用户信息name。故此时在相应配置中,需对该字段进行映射,映射为本地用户名。同时设置认证成功的条件为,name不为空。

完成上述步骤后,点击<保存>完成认证服务器的对接。

在浏览器上输入,aTrust客户端接入地址,即可跳转至oauth2.0认证平台,输入账号密码即可正常登录至aTrust,并跳转至用户应用中心

  1. 效果验证

效果验证有两种方式,一种是配合本地密码认证,以本地密码认证默认认证方式,如需使用UniTrust登录,则直接点击UniTrust图标即可。另一种是将UniTrust设置为默认认证方式,输入客户端接入地址,将直接跳转至UniTrust登录界面。

验证方式1:默认登录方式为本地密码认证

步骤1. 进入[系统管理/系统设置/登录门户]设置默认值登录方式为本地密码认证,点击<保存>完成设置。

步骤2. 输入aTrust客户端接入地址(https://控制中心地址对外映射地址:外网端口),显示用户认证界面。点击<竹云认证>并勾选协议和政策选项,点击<立即前往>跳转至oauth2.0认证服务器的认证界面。

步骤3. 完成步骤1后,在第三方认证界面(oauth2.0认证服务器)

步骤4 输入账户名和密码,完成用户登录,并跳转至用户应用中心。

验证方式2:默认登录方式为UniTrust认证服务器

步骤1. 进入[系统管理/系统设置/登录门户]设置默认值登录方式为UniTrust,点击<保存>完成设置。

步骤2. 浏览器输入客户端接入地址,直接跳转至阿里云iDass登录认证界面,输入用户账号密码,验证通过后,跳转至用户应用中心。