零信任访问控制系统aTrust

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

Oauth2.0票据认证

更新时间:2023-06-15

aTrust设备能够基于Oauth2.0标准协议,对接第三方认证服务器。允许用户将访问第三方移动应用的认证信息,存储到另外的Oauth服务器上,而不用再将用户名及密码提供给第三方移动应用,用户身份的认证校验都在Oauth服务器上完成,解决单点登录(SSO)可靠性的问题。在SSO单点登录中需要用到Oauth2.0认证,Oauth2.0认证就是为了下次或登录子系统时不用重复输入登录名和密码。

OAuth2.0票据认证流程如下:

aTrust对接OAuth2.0服务器后,相关地址如下:

  1. aTrust客户端接入地址:https://sdpc.company.com
  2. code地址:https://sso.company.com/oauth2/authorize
  3. 获取token地址:https://10.243.3.65/oauth2/token
  4. 获取用户信息地址:https://10.243.3.65/oauth2/get_user_info
  5. 注销地址:https://sso.company.com/oauth2/user_logout

简化认证流程图如下:

明细认证流程图如下:

适用场景和功能效果

当客户的SSO/统一认证门户平台支持Oauth协议,aTrut可作为SSO的一个子应用,进行认证对接,实现如下效果。

认证对接,对接后用户将统一在SSO上认证,认证通过即可上线aTrust平台,避免重复输入密码。在外网接入场景下,在aTrust对接Oauth服务器,有两种实现方式,具体如下。

  1. 场景一、 Oauth认证平台本身就暴露在外网,则aTrust平台可根据提供的接口文档信息和Oauth服务器地址直接进行对接。
  2. 场景二、 Oauth认证平台存在于内网,或暴露在外网但想改造为不直接暴露在公网,可通过配置免认证应用实现。该方式需将代理网关的一个端口做公网映射,允许用户在外网访问。

在上述两种方案中,建议配合安全策略和SPA(单包授权)进行安全防护。

认证增强, aTrust可通过配置认证策略,实现为Oauth认证的用户进行二次认证增强。

5.2.1.5.1.idTrust-Oauth2.0票据认证案例

预制条件

  1. aTrust控制器SDPC和代理网关Proxy已安装。
  2. 控制中心SDPCidTrust认证服务器网络互通,且idTrust上配置添加SDPC作为授信应用地址。
  3. 提前获取idTrust-OAuth2.0认证对接API接口文档。

配置指导

一、获取aTrustOauth基础信息

  1. 由于是将aTrust作为idTrust-Oauth认证平台的子应用,在aTrustidTrust双方都需进行配置。
  1. 举例场景二,客户将公网认证服务器暴露在公网进行认证登录,现在想通过aTrust进行对接,假设aTrustidTrust的基础信息如下。
  2. aTrust互联网接入地址:https://sdpc.company.com,该地址互联网可直接访问并完成登录。Oauth SSO的内网地址为:https://10.XXX.XX.65
  3. idTrust  SSO的外网地址为:https://sso.company.com,该地址互联网可以正常访问并完成登录(将该SSO的外网域名地址的解析关系更改为代理网关,并将代理网关的443端口做映射。若考虑到在测试前期不想将原有域名做解析更改(影 响原有用户认证),可申请一个新的域名,本次举例以该域名解析更改至代理网关举例)。

二、获取Oauth认证信息

获取客户的认证接口文档(若无接口文档,需提供配置Oauth认证的相关信息包括OauthCode地址、Client_IDToken地址、Client_Secret、用户信息请求地址)。

获取目的:这些信息需要配置到aTrust系统上,以便完成配置对接工作。

  1. Oauth认证平台上为aTrust进行子应用配置和授权,典型的方式为,在Oauth系统上创建一个新的子应用,并填写相 应内容完成配置。由于各Oauth系统配置有所不同,此处以Sangfor IDTrust为例进行示例,具体如下。
  2. 登录IDTrust平台,在[应用管理]新增一个oauth认证应用,完成基本信息配置,URL地址填写为aTrust客户端接入地址。

注:URL地址表明允许指定的地址发送访问请求,即地址加白。

  1. 完成认证设置配置,应用类型选择webSSO协议选择OAuth2.0,登录跳转URL地址填写为[https://sdp域名地址:端口/passport/v1/auth/oauth2],同时在该页面下载OAuth的接口说明文档,用于给aTrust对接做参考。

注:URL地址表明OAuth服务器通过用户验证后,将认证信息返回的目标地址路径。

  1. 完成OAuth服务器的映射字段配置,定义指定的请求字段信息。

  1. 提交保存配置后,重新打开该新建的应用,将生成的Client IDClient Secret记录。

  1.  最终根据配置和接口文档获取可得。

Code地址:https://sso.company.com/oauth2/authorize

Client_ID4200342196

Token 地 址 :https://10.243.3.65/oauth2/token

Client_Secret90c7222b7117074f949176e37fb3b092

用户信息请求地址:https://10.243.3.65/oauth2/get_user_info

注销地址:https://sso.company.com/oauth2/user_logout

三、配置免认证应用

免认证应用是一个web应用,由代理网关直接代理访问,不需要进行身份鉴别(即不需要对用户做应用授权也能访问)。 适用于认证服务器暴露在外网,但想改造为不直接暴露在公网的场景。此种方式存在安全风险,不建议发布业务应用地    址。

  1. 管理员登录aTurst控制台,进入[业务管理/应用管理/免认证应用]配置页面,点击<新增>
  1. 进入免认证应用配置页面,配置逻辑与普通的web应用配置一致。即前端访问地址填写域名(域名的A记录解析地址需指向代理网关,同时将对应的端口做公网端口映射),后端服务器地址填写认证服务器的内网域名地址或IP地址。点 击<保存>完成免认证应用的配置。

四、OAuth认证服务器对接配置

.需要完成基本信息、认证配置和注销配置的信息配置。

名称:名称可以根据实际情况填写。此处命名为IDTrust-Oauth认证

认证域:主要是在多个认证方式的情况下,区分认证方式的,员工可以看到,建议可读性好一些。此处命名为@sso- company

认证超时:设定认证的超时时间。

认证配置如下:

Code地址:该地址用来显示认证服务器的认证页面,需填写浏览器在互联网能访问的OAuth地址,即免认证应用的前端 访问地址(若未使用免认证应用,则填写认证服务器的互联网地址或域名)。

Token地址:认证门户获取code后,访问该地址获取认证服务器的ticket授权信息,需填写aTrust控制中心能访问到的OAuth2服务器内网IP地址或内网域名。

用户信息请求地址:使用ticket获取用户认证请求结果信息,需填写aTrust控制中心可访问到OAuth2服务器的内网IP或域名。

接收字段:接收字段主要用于从认证接口返回值中获取用户名、组织架构、用户群组、手机号码、邮箱等信息。

注销配置

用户注销地址:该地址用来实现用户的注销,需填写浏览器在互联网能访问的OAuth地址,即免认证应用的前端访问地址

(若未使用免认证应用,则填写认证服务器的互联网地址或域名)。

用户源设置

认证方式需要绑定到用户目录(也称用户源),以获取用户对应的角色授权和组织结构授权的资源,以及相关安全策略、 认证策略。支持多种认证方式绑定到同一个用户目录,以实现一个用户,相同的权限策略,但是具备多种认证方式。

根据配置情况的不同,用户源设置有两种场景配置,分别是如下。

场景1. 已配置好的OAuth2.0认证服务器的用户目录,可直接选择。比如此场景下,OAuth2.0系统(Sangfor IDTrust)具备LDAP用户源供给的能力,提前已经建立好了LDAP 用户目录,选择即可。

场景2. 如果未新建好,可直接点击新增,会跳转到用户目录新建页面,选择在线获取用户(支持对接MSActiveDirectory/Open LDAP/Sangfor IDTrust LDAP)或自选择定义获取用户(可批量导入本地用户) ,具体配置可在该页面查看右侧帮助教程。

  1. OAuth2.0票据认证服务器对接完成后,导入OAuth2.0认证服务器组织架构/标签/用户,并授权应用。
  2. 完成对接后,输入aTrust客户端接入地址,页面可重定向到OAuth2.0认证服务器认证页面,也可显示我们的认证界面选择不同的认证方式。

方式一:浏览器输入客户端接入地址,重定向跳转至OAuth2.0认证服务器的认证页面。

管理员登录控制中心,在[系统管理/系统设置/登录门户/门户设置]-选择默认跳转三方登录。

    

方式二:浏览器输入客户端接入地址,不直接重定向至OAuth2.0认证服务器的认证页面,而是显示aTrust自己的认证界面。

管理员登录控制中心,在[系统管理/系统设置/登录门户/门户设置]-选择手动点击后跳转登录。

注意事项

  1. OAuth2.0认证服务器对接,需保证SDPCOAuth2.0服务器网络通信正常。
  2. aTrustIDtrust对接后,用户退出会有异常现场,这是因为IDtrust没有注销模块。
    对接OAuth2.0认证服务器后,如没有导入组织架构或用户时,想要用OAuth2.0服务器用户登录,需在创建用户源时选择用户未导入时,允许登录,使用默认授权。
  3. 当前不支持直接从OAuth2.0服务器上导用户,只有当OAuth2.0服务器有管理接口AD域时,支持用户的搜索导入添加,其余只能通过手动录入方式进行添加外部用户
  4. 当前只支持添加一个idTrust-OAuth2.0认证服务器

添加认证服务器时,倘若存在认证服务器的接收字段配置与真实认证服务器上字段不一致的话,将导致该字段类型无法完成票据认证,无法接收到信息

5.2.1.5.2.自定义oauth2票据认证案例

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

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

(一)准备工作

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

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

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

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

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

(二)对接信息获取

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

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

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

3)完成应用配置后需客户提供client_idclient_secret信息。

(三)用户目录配置

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

(四)自定义oauth认证对接配置

第一部分:基础信息配置

步骤1.完成用户目录配置后,管理员进入[业务管理/认证管理/认证服务器]点击新增,主认证服务器选择OAauth2.0票据认证。

步骤2.如果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_idclient_secret。即配置第一步请求时,我们需要在请求头部填写client_idclient_secret参数,如下。

参数

必选(是/否)

说明

client_id

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

此处填写:qwerASDF1234ZXCVCojnh

client_secret

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

此处填写:QWERTdfgvbn12345iugyjh

2)地址和请求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数据进行预处理,用于第二步的请求

数据配置处理如下。

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

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

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

① 请求方式:get

② 接口地址参数为: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不为空。

步骤5. 用源设置

 在用户源设置选择关联用户目录为之前创建好的oauth2用户目录,用户查找方式配置好认证服务器返回的用户名字段与用户目录用户名字段的映射关系。

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

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

(一)效果验证

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

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

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

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

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

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

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

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

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