文档

在ASM网关中配置OIDC单点登录

更新时间:

OIDC(OpenID Connect)是基于OAuth 2.0协议实现的一种身份认证与授权协议,主要用于实现单点登录(SSO)。通过在ASM网关中配置OIDC单点登录,您可以借助阿里云IDaaS或其他符合OIDC标准的身份提供者,无需修改应用本身,即可实现一次登录、多次访问。这不仅增强了应用的安全性,还简化了应用系统的开发和管理。

前提条件

操作步骤

本文以阿里云IDaaS的IdP为例。若您使用自建的OIDC服务,请参见ASM中集成Keycloak实现网格内应用单点登录

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关

  3. 入口网关页面,单击目标网关名称。

  4. 在网关概览页面左侧导航栏,选择网关安全 > OIDC单点登录

  5. OIDC配置配置向导,打开启用网关OIDC单点登录开关,进行相关配置,然后单击下一步

    配置项

    说明

    登录重定向地址

    本文选择使用网关IP地址http协议。

    callback地址

    重定向地址。

    OIDC颁发者URL

    用于标识和验证OpenID Connect提供者的URL。

    颁发者提供的客户端ID(ClientID)

    颁发者提供的客户端ID。

    颁发者提供的客户端密钥(ClientSecret)

    颁发者提供的客户端密钥。

    Cookie密钥

    Secure Cookies的种子(支持Base64编码)。

    Cookie过期时间

    到达该时间后刷新Cookie。设置为0表示关闭刷新。

    Cookie刷新时间

    每间隔该时间刷新Cookie。设置为0表示关闭。

    用户信息范围Scopes

    指定获取的Scopes。指定的Scope必须被Issuer支持。

    OIDC配置

  6. 匹配规则配置向导,进行相关配置,然后单击提交

    配置项

    说明

    匹配模式

    本文选择选中请求必须经过认证。取值说明如下:

    • 选中请求必须经过认证:需要用户登录才能进行访问。

    • 选中请求可跳过认证:无需用户登录,即可进行访问。

    添加配置规则

    打开HTTP路径(Path)开关,配置为/productpage。该配置表示路径为/productpage的请求必须经过OIDC认证。

    创建成功后,在完成配置向导会显示“网关OIDC单点登录创建成功”和服务网格原生的安全资源。您可以单击查看YAML,查看资源的具体配置。

  7. 使用浏览器访问http://${ASM网关地址}/productpage,验证OIDC单点登录配置是否生效。

    请将${ASM网关地址}替换为实际网关地址。如下图所示,您登录后访问成功,表明OIDC单点登录配置生效。验证OIDC是否生效

FAQ

在网关上接入OIDC之后,应用是否还需要获取access token或直接向IdP请求用户信息?

在网关上接入OIDC之后,应用无需关注任何与IdP认证鉴权相关的逻辑。您的应用收到的请求中会携带一个Key为Authorization的Header,这个Header是在请求经过网关时被添加上的。该Header是一个来自IdP的JWT,JWT的Payload中包含了应用所需的用户信息,并且经过了网关的JWT验证,您的应用无需再重复对该JWT进行验证。应用直接从请求中解析这个Header即可,无需向IdP请求用户信息。

接入OIDC之后,浏览器上登录时发现多了一个Cookie,这个Cookie是否对应用有意义?

应用无需关注这个Cookie。该Cookie是网关记录当前会话的状态,对应用本身没有意义。应用只需要读取请求中的JWT即可。

如何获取IdP提供的一些扩展信息?

在ASM处无需任何特殊配置,您需要参考对应的IdP实现。此处以阿里云IDaaS为例,详情请参见扩展字段

如何注销当前的登录状态?

注销分为以下两个步骤:

  1. 注销IdP处的登录状态。您需要根据IdP提供的方法进行注销。通常IdP会提供一个用于登出的URI,调用之后即可注销。

  2. 清除当前网关在客户端设置的Cookie。您可以直接调用/oauth2/sign_out路径,网关会自动清除对应Cookie。

ASM从1.18.147版本起,支持直接在网关上配置IdP登出端点。您可以直接在OIDC配置页面填写,然后在匹配规则的配置中,将路径为/oauth2/sign_out的请求跳过认证。配置完成后,浏览器访问/oauth2/sign_out时,对应Cookie会被清除,同时页面会被重定向至您设置的登出端点。关于阿里云IDaaS登出的具体步骤,请参见单点登出SLO

相关文档