OIDC(OpenID Connect)是基于OAuth 2.0协议实现的一种身份认证与授权协议,主要用于实现单点登录(SSO)。通过在ASM网关中配置OIDC单点登录,您可以借助阿里云IDaaS或其他符合OIDC标准的身份提供者,无需修改应用本身,即可实现一次登录、多次访问。这不仅增强了应用的安全性,还简化了应用系统的开发和管理。
前提条件
已为命名空间注入Sidecar。具体操作,请参见配置Sidecar注入策略。
已完成IdP(身份提供商)的配置。具体操作,请参见ASM集成阿里云IDaaS实现网格内应用单点登录的步骤一和步骤二。
IdP配置完成后,您可以得到如下信息,用于下文步骤5的配置。
redirect uri:http://${网关地址}/oauth2/callback issuer:https://eiam-api-cn-hangzhou.aliyuncs.com/v2/idaas_tbn25osdlmz6gtqfq3j2pz****/app_ml5tzapsl7zmfo53wb3nwk****/oidc client id:******** client secret:*********
操作步骤
本文以阿里云IDaaS的IdP为例。若您使用自建的OIDC服务,请参见ASM中集成Keycloak实现网格内应用单点登录。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在入口网关页面,单击目标网关名称。
在网关概览页面左侧导航栏,选择 。
在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支持。
在匹配规则配置向导,进行相关配置,然后单击提交。
配置项
说明
匹配模式
本文选择选中请求必须经过认证。取值说明如下:
选中请求必须经过认证:需要用户登录才能进行访问。
选中请求可跳过认证:无需用户登录,即可进行访问。
添加配置规则
打开HTTP路径(Path)开关,配置为/productpage。该配置表示路径为/productpage的请求必须经过OIDC认证。
创建成功后,在完成配置向导会显示“网关OIDC单点登录创建成功”和服务网格原生的安全资源。您可以单击查看YAML,查看资源的具体配置。
使用浏览器访问http://${ASM网关地址}/productpage,验证OIDC单点登录配置是否生效。
请将${ASM网关地址}替换为实际网关地址。如下图所示,您登录后访问成功,表明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为例,详情请参见扩展字段。
如何注销当前的登录状态?
注销分为以下两个步骤:
注销IdP处的登录状态。您需要根据IdP提供的方法进行注销。通常IdP会提供一个用于登出的URI,调用之后即可注销。
清除当前网关在客户端设置的Cookie。您可以直接调用
/oauth2/sign_out
路径,网关会自动清除对应Cookie。
ASM从1.18.147版本起,支持直接在网关上配置IdP登出端点。您可以直接在OIDC配置页面填写,然后在匹配规则的配置中,将路径为/oauth2/sign_out
的请求跳过认证。配置完成后,浏览器访问/oauth2/sign_out
时,对应Cookie会被清除,同时页面会被重定向至您设置的登出端点。关于阿里云IDaaS登出的具体步骤,请参见单点登出SLO。
相关文档
关于OIDC应用的相关配置项说明,例如接口访问、密钥轮转、IDaaS对OIDC不同模式的支持、IDaaS侧配置、应用侧配置等,请参见基本配置、单点登录通用说明、OIDC SSO 配置和OIDC id_token 扩展值填写规范。
当您通过IDaaS SSO登录应用后,需要退出登录,可以在应用侧发起全局退出,将IDaaS主登录会话同步终止。具体操作,请参见单点登出SLO。