更新时间:2023-05-05
OAuth2认证是最常见的用户认证协议,aTrust可实现跟OAuth2认证服务器对接后,用户登录aTrust或访问web应用时可跳转至OAuth2认证平台进行用户认证,用户认证成功后,可实现用户在aTrust和OAuth2认证服务器上线。
本节主要介绍了aTrust对接UniTrust oauth2.0认证服务器方案,该方案中用户源为uniTrust提供的LADP/AD域服务器,认证协议为oauth2.0。完成配置后,可实现用户访问aTrust客户端接入地址,跳转至oauth2.0认证服务器进行用户认证,并跳转至用户的应用中心。
准备工作
在配置自定义OAuth2认证服务器前,我们需要了解aTrust设备对接OAuth2认证服务器的一些信息,具体如下。
aTrust对接OAuth2认证服务器,与我们aTrust设备而言,是控制中心(或综合网关)与OAuth2认证服务器做信息交付,即需保证aTrust控制中心(综合网关)与OAuth2认证服务器的网络通信是正常的。
配置前需在认证服务器平台创建一个OAuth2认证应用,并将aTrust客户端接入地址在应用上加白放通(即认证服务器的回调域名需指向我们的客户端接入地址),回调域名为https://客户端接入地址:port/passport/v1/auth/httpsOauth2。配置回调域名的作用是需要将OAuth2认证成功的用户信息返回给控制中心(或综合网关),使得用户在控制中心(或综合网关)上线。
在认证服务器上配置好OAuth2认证应用后,获取OAuth2认证的client_id和 client_secret信息,前者用于获取用户code信息,后者用户获取access_token(票据)信息。
完成上述信息确认后,从客户处获取认证服务器的地址,和OAuth2认证接口文档,用于了解对接OAuth2认证服务器的详细配置信息。
对接信息获取
在aTrust设备配置对接oauth2认证服务器前,需要客户配合完成如下操作:
OAuth2认证服务器管理员配置oauth应用(客户配合操作)
配置回调域名https://客户端接入地址:port/passport/v1/auth/httpsOauth2
完成应用配置后需客户提供client_id和 client_secret信息。
用户目录配置
aTrust管理员登录控制中心(或综合网关),进入[业务管理/用户管理]点击<新增>配置认证服务器的用户目录(支持LDAP/AD和自定义本地用户目录)。具体配置详情和说明,请点击<新增>在用户目录配置页面右上角参考配置帮助,或参考《aTrust用户手册》章节5.1用户管理,此处不再做说明。
自定义oauth认证对接配置
第一部分:基础信息配置
步骤1.完成用户目录配置后,管理员进入[系统管理/特性中心]开启<自定义oauth2.0认证>功能。
步骤2.开启自定义oauth2.0票据认证后,进入[业务管理/认证管理/认证服务器]点击<新增>选择<自定义oauth2.0认证>。
步骤3.进入自定义oauth2.0认证配置页面,完成基本信息和用户源的配置,如下。
第二部分:获取code配置
步骤1. 完成获取code配置。
根据接口文档《UniTrust 统一身份认证开放能力》,文档中章节 “3.1授权码认证-获取授权码”的接口说明表获取如下信息。
请求地址:https://unitrust.sf-atrust.com/authn/corporate/authorize
请求类型:GET
请求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,需要在请求头部和参数配置相关参数,具体如下。
地址和请求头部参数信息
请求方式: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 |
地址和请求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,可在第二次请求用户认证信息时携带信息至认证服务器校验,获取用户认证信息。具体配置如下。
将获取到的access_token数据进行预处理,用于第二步的请求
数据配置处理如下。
配置第一步认证成功条件为access_token等于不为空(能成功通过校验后,即可获取access_toekn,值肯定是不为空)。
步骤3. 第二步请求设置配置。
请求方式: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不为空。
完成上述步骤后,点击<保存>完成认证服务器的对接。
在浏览器上输入,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登录认证界面,输入用户账号密码,验证通过后,跳转至用户应用中心。