配置OIDC认证鉴权

通过OIDC协议与企业的认证鉴权系统整合,可以实现对内部服务的统一认证和授权管理,避免了重复的对接工作,同时简化了认证流程。AI 网关提供了统一认证鉴权,加强了系统的安全性,并提供了更加灵活的安全策略配置。整合OIDC协议还能实现单点登录,您只需一次登录即可访问多个服务。

前提条件

已创建统一的认证鉴权服务,且支持标准的OIDC(OpenID Connect)协议。

背景信息

网关作为外界访问内部服务的一个控制点,需要对外部的请求进行认证鉴权,确保内部服务的安全性。企业内一般会自建一套统一的认证鉴权体系,AI网关支持通过OIDC协议与自建的认证鉴权体系打通,支持对接入的内部服务做统一认证鉴权,避免每个服务都需要对接认证鉴权体系。

基于OIDC认证

OIDC(OpenID Connect)是一种安全认证机制,第三方应用连接到身份认证提供商(Identify Provider)获取用户信息,并把这些信息以安全可靠的方式返回给第三方应用。OIDCOAuth2.0协议进行了扩展,通过扩展的ID Token字段,提供用户基础身份信息,ID Token使用JWT(JSON Web Token)格式进行封装,提供自包含性、防篡改机制,可以安全地传递给第三方应用程序并容易被验证。

假设有以下四个角色:

  • 客户端:直接为用户提供服务。

  • 认证服务:OpenID提供方,通常是指OpenID认证服务器,为第三方颁发用于认证的ID Token。

  • 业务服务:提供业务服务。

  • 用户:指资源持有者。

image

业务流程如下:

  1. 客户端发送认证请求给认证服务。

  2. 用户在认证页面进行授权确认(通过用户名和密码登录)。

  3. 认证服务对认证请求进行验证,并返回Code给客户端。

  4. 客户端向业务服务请求回调接口,请求中携带Code。

  5. 业务服务请求认证服务颁发Token,请求中携带Code、Client ID、Client Secret。

  6. 认证服务验证合法性,并返回ID Token。

  7. 认证成功,业务服务返回ID Token给客户端。

  8. 客户端向业务请求,请求中携带ID Token。

  9. 业务服务验证ID Token是否合法,然后返回业务应答。

AI网关OIDC认证流程

在上述OIDC认证流程中,如果有不同的业务服务,例如用户服务、订单服务等,则每个业务服务都需要实现认证鉴权逻辑,包括校验请求是否合法、对接认证服务等。通过AI 网关的OIDC认证功能,可以实现在网关统一认证鉴权。

image

业务流程如下:

  1. 客户端向网关发起认证请求。

  2. 网关将认证请求直接转发到认证服务。

  3. 认证服务读取请求中的验证信息(例如用户名、密码)进行验证,验证通过后返回Code给网关。

  4. 网关将携带Code的应答返回给客户端。

  5. 客户端向网关请求回调接口,请求中携带Code。

  6. 网关请求认证服务颁发Token,请求中携带Code、Client ID、Client Secret。

  7. 认证服务验证合法性,并返回ID Token。

  8. 认证成功,网关将携带ID Token的应答返回给客户端。

  9. 客户端向网关发起业务请求,请求中携带ID Token,网关校验请求中是否携带ID Token和合法性。

  10. 网关校验客户端的业务请求是否合法,将请求透传给业务服务。

  11. 业务服务进行业务处理后应答。

  12. 网关将业务应答返回给客户端。

在整个认证鉴权过程中,AI 网关会验证请求是否合法。如果请求不合法,AI网关会重定向到用户登录页面,并能代理请求认证服务实现用户登录认证,实现业务服务对认证服务无感知。

创建认证鉴权规则

  1. 登录AI网关控制台

  2. 在左侧导航栏,选择实例,并在顶部菜单栏选择地域。

  3. 实例页面,单击目标网关实例ID。

  4. 在左侧导航栏,单击安全管理 > 全局认证鉴权

  5. 在页面左上角,单击创建鉴权配置网关鉴权相关参数,然后单击确定

    AI 网关OIDC认证鉴权参数说明如下。

    参数

    描述

    开启

    是否开启AI 网关鉴权。

    鉴权名称

    自定义AI 网关鉴权的名称。

    鉴权类型

    选择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的所有子域名。

    Cookie Secret

    用于在创建Cookie时添加数字签名,确保其不会被非法篡改。

    Scope

    输入授权作用域,多个域值用英文分号(;)分隔。

    授权

    授权模式支持白名单模式黑名单模式

    • 白名单模式:白名单中的hosts+paths不需要校验即可访问,其余的都需要校验。

    • 黑名单模式:黑名单中的hosts+paths需要校验,其余可直接访问。

    单击+规则条件,设置请求域名和路径。

    • 域名:请求访问的域名,即hosts。

    • 路径(Path):请求访问的接口路径,即paths。