通过OIDC协议与企业的认证鉴权系统整合,可以实现对内部服务的统一认证和授权管理,避免了重复的对接工作,同时简化了认证流程。云原生API网关提供了统一认证鉴权,加强了系统的安全性,并提供了更加灵活的安全策略配置。整合OIDC协议还能实现单点登录,您只需一次登录即可访问多个服务。
前提条件
已创建统一的认证鉴权服务,且支持标准的OIDC(OpenID Connect)协议。
背景信息
网关作为外界访问内部服务的一个控制点,需要对外部的请求进行认证鉴权,确保内部服务的安全性。企业内一般会自建一套统一的认证鉴权体系,云原生API网关支持通过OIDC协议与自建的认证鉴权体系打通,支持对接入的内部服务做统一认证鉴权,避免每个服务都需要对接认证鉴权体系。
基于OIDC认证
OIDC(OpenID Connect)是一种安全认证机制,第三方应用连接到身份认证提供商(Identify Provider)获取用户信息,并把这些信息以安全可靠的方式返回给第三方应用。OIDC对OAuth2.0协议进行了扩展,通过扩展的ID Token字段,提供用户基础身份信息,ID Token使用JWT(JSON Web Token)格式进行封装,提供自包含性、防篡改机制,可以安全地传递给第三方应用程序并容易被验证。
假设有以下四个角色:
客户端:直接为用户提供服务。
认证服务:OpenID提供方,通常是指OpenID认证服务器,为第三方颁发用于认证的ID Token。
业务服务:提供业务服务。
用户:指资源持有者。
业务流程如下:
客户端发送认证请求给认证服务。
用户在认证页面进行授权确认(通过用户名和密码登录)。
认证服务对认证请求进行验证,并返回Code给客户端。
客户端向业务服务请求回调接口,请求中携带Code。
业务服务请求认证服务颁发Token,请求中携带Code、Client ID、Client Secret。
认证服务验证合法性,并返回ID Token。
认证成功,业务服务返回ID Token给客户端。
客户端向业务请求,请求中携带ID Token。
业务服务验证ID Token是否合法,然后返回业务应答。
云原生API网关OIDC认证流程
在上述OIDC认证流程中,如果有不同的业务服务,例如用户服务、订单服务等,则每个业务服务都需要实现认证鉴权逻辑,包括校验请求是否合法、对接认证服务等。通过云原生API网关的OIDC认证功能,可以实现在网关统一认证鉴权。
业务流程如下:
客户端向网关发起认证请求。
网关将认证请求直接转发到给认证服务。
认证服务读取请求中的验证信息(例如用户名、密码)进行验证,验证通过后返回Code给网关。
网关将携带Code的应答返回给客户端。
客户端向网关请求回调接口,请求中携带Code。
网关请求认证服务颁发Token,请求中携带Code、Client ID、Client Secret。
认证服务验证合法性,并返回ID Token。
认证成功,网关将携带ID Token的应答返回给客户端。
客户端向网关发起业务请求,请求中携带ID Token,网关校验请求中是否携带ID Token和合法性。
网关校验客户端的业务请求合法,将请求透传给业务服务。
业务服务进行业务处理后应答。
网关将业务应答返回客户端。
在整个认证鉴权过程中,云原生API网关会验证请求是否合法。如果请求不合法,云原生API网关会重定向到用户登录页面,并能代理请求认证服务实现用户登录认证,实现业务服务对认证服务无感知。
创建认证鉴权规则
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏,单击
。在页面左上角,单击创建鉴权配置网关鉴权相关参数,然后单击确定。
云原生API网关OIDC认证鉴权参数说明如下。
参数
描述
开启
是否开启云原生API网关鉴权。
鉴权名称
自定义云原生API网关鉴权的名称。
鉴权类型
选择OIDC认证方式。
Issuer
设置认证服务的Issuer,即签发人。
重定向URL
输入授权成功后的重定向地址,需要与OIDC中配置的重定向地址保持一致。
重要格式为
http(s)://yourdomain/path
(地址中的path必须为/oauth2/callback
)Client-ID
输入服务注册的应用ID。
Client-Secret
输入服务注册的应用Secret。
Cookie-Domain
输入Cookie的域名,认证通过后会将Cookie发送到指定的域名,保持登录状态。例如:设置
Cookie-domain=a.example.com
,则Cookie会发送到域名a.example.com;设置Cookie-domain=.example.com
,则Cookie会发送到example.com的所有子域名。Scope
输入授权作用域,多个域值用英文分号(;)分隔。
授权
授权模式支持白名单模式和黑名单模式。
白名单模式:白名单中的hosts+paths不需要校验即可访问,其余的都需要校验。
黑名单模式:黑名单中的hosts+paths需要校验,其余可直接访问。
单击+规则条件,设置请求域名和路径。
域名:请求访问的域名,即hosts。
路径(Path):请求访问的接口路径,即paths。
创建认证路由
云原生API网关认证鉴权规则创建完成后,然后创建认证相关路由规则。具体操作,请参见创建路由。
认证规则路由参数配置如下:
关联域名:选择创建鉴权配置的重定向URL的域名,如果没有配置域名可以选择*。
重要如果使用HTTPS,必须配置域名并关联。
路径:选择前缀匹配,并输入
/oauth2
。目标服务:选择目标服务oauth2-proxy。
查看鉴权详情
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏,单击
。在全局认证鉴权页面,单击鉴权规则名称或操作列的详情,可查看当前认证配置和授权信息的管理。
您可在授权信息区域单击创建授权信息,在对话框中输入请求域名和请求Path,并选择匹配方式,单击确定新增授权规则。
结果验证
返回全局认证鉴权页面查看鉴权信息,如果已包含新建网关鉴权信息,则说明网关认证鉴权新建成功。
相关操作
您还可以执行以下其他操作,管理网关的认证鉴权:
开启鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的开启,使认证鉴权信息生效。
关闭鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的关闭,关闭网关认证鉴权信息。
编辑鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的编辑,可编辑网关认证鉴权信息。
删除鉴权:在全局认证鉴权页面,单击目标鉴权规则操作列的删除,可删除网关认证鉴权信息。
只有在认证鉴权信息关闭的状态下才可执行删除操作。
相关文档
如果您想了解其他认证鉴权机制,请参见网关认证鉴权概述。