当前位置:首页 > 科技  > 软件

Envoy Gateway:十分钟搞定单点登录(SSO)!

来源: 责编: 时间:2023-12-11 17:20:07 340观看
导读单点登录(SSO)简化了用户体验,使用户能够在访问多个应用时只需一次登录。这提高了用户满意度,减少了密码遗忘的风险,同时增强了安全性。但是,实现单点登录并不容易,需要应用程序实现和认证服务器的交互逻辑,增加了应用程序的

单点登录(SSO)简化了用户体验,使用户能够在访问多个应用时只需一次登录。这提高了用户满意度,减少了密码遗忘的风险,同时增强了安全性。但是,实现单点登录并不容易,需要应用程序实现和认证服务器的交互逻辑,增加了应用程序的开发工作量。Envoy Gateway 在最新版本中的安全策略中提供了 OpenID Connect (OIDC) 的能力,采用 Envoy Gateway,无需对应用做任何修改,在十分钟内即可立刻实现单点登录。jnj28资讯网——每日最新资讯28at.com

什么是单点登录(SSO) ?

SSO 是 英文 Single Sign-On 的缩写,翻译为中文即为单点登录。当采用单点登录之后,用户只需要登录一次,就可以访问多个应用系统。SSO 通常由一个独立的身份管理系统来完成,该系统为每个用户分配一个全局唯一的标识,用户在登录时,只需要提供一次身份认证,就可以访问所有的应用系统。我们在使用一些网站时,经常会看到“使用微信登录”、“使用 Google 账户登录”等按钮,这些网站就是通过 SSO 来实现的。jnj28资讯网——每日最新资讯28at.com

采用单点登录有以下几个好处:jnj28资讯网——每日最新资讯28at.com

  • • 用户只需要登录一次,就可以访问多个应用系统,不需要为每个应用系统都单独登录。
  • • 应用系统不需要自己实现用户认证,只需将认证工作交给单点登录系统,可以大大减少应用系统的开发工作量。

图片图片jnj28资讯网——每日最新资讯28at.com

什么是 OpenID Connect (OIDC) ?

SSO 通常是通过 OpenID Connect (OIDC) ¹ 来实现的。OIDC 是一个基于 OAuth 2.0 ² 协议之上的身份认证协议。jnj28资讯网——每日最新资讯28at.com

OAuth 2.0 协议本身是一个授权协议,OAuth 2.0 协议中的授权服务器(Authorization Server)负责对用户进行身份认证,认证成功后,授权服务器会向客户端颁发一个访问令牌(Access Token),客户端可以使用该令牌来访问该用户的受保护的资源。例如用户可以通过 OAuth 2.0 授权一个第三方应用访问其 Github 账号下的代码库。Access Token 是一个透明的字符串,只有授权服务器才知道如何解读。客户端会在访问受保护资源时带上 Acces Token,授权服务器根据 Access Token 来判断该请求是否有访问指定资源的权限。Access Token 只用于对资源访问进行授权,其中并没有用户身份信息。jnj28资讯网——每日最新资讯28at.com

OIDC 通过在 OAuth 2.0 协议之上增加了一个 ID Token 来实现身份认证。OIDC 的认证过程和 OAuth 2.0 的认证过程是一样的,只是认证服务器在对用户认证后向客户端颁发的是一个 ID Token 而不是 Access Token。ID Token 是一个 JSON Web Token (JWT) ³,JWT Token 是一个标准的格式,其中包含了用户的身份信息,例如用户的唯一标识,用户名,邮箱等,并且可以通过认证服务器的公钥进行验证,因此可以代表登录的用户身份。OIDC 通过 ID Token 来实现身份认证,从而实现了单点登录。jnj28资讯网——每日最新资讯28at.com

备注:由于篇幅有限,本文对 OAuth 2.0 只做简单介绍,如果感兴趣的话,可以移步阮一峰老师的 OAuth 2.0 介绍 ⁴ 系列文章进一步了解协议的原理。jnj28资讯网——每日最新资讯28at.com

Envoy Gateway OIDC 认证过程

Envoy Gateway 在最新版本中的安全策略中提供了 OIDC 的能力,可以通过 OIDC 来实现单点登录。OIDC 标准支持通过 OAuth 2.0 中的 Authorization Code Flow,Implicit Flow,Hybrid Flow 三种方式来进行身份认证。Envoy Gateway 采用了其中最安全,也是最常用的 Authorization Code Flow ⁵。下图展示了 Envoy Gateway OIDC 的认证过程。jnj28资讯网——每日最新资讯28at.com

图片图片jnj28资讯网——每日最新资讯28at.com

  • • 当用户访问一个需要进行 OIDC 认证的 HTTPRoute 时,Envoy Gateway 会检查请求中是否有代表用户身份的 ID Token,如果没有,或者 Token 已经过期,则会将请求重定向到 OIDC Provider 的认证页面。
  • • 用户在 OIDC Provider 的认证页面输入用户名和密码等身份信息进行认证。认证成功后,OIDC Provider 会将用户重定向到 Envoy Gateway 的回调地址,并且带上一个 Authorization Code。
  • • Envoy Gateway 收到 OIDC Provider 的回调请求后,会将 Authorization Code 发送给 OIDC Provider,OIDC Provider 根据 Authorization Code 生成一个 ID Token,并将 ID Token 返回给 Envoy Gateway。
  • • Envoy Gateway 收到 ID Token 后,会将 ID Token 保存在一个 Cookie 中,并将请求重定向到原来的 HTTPRoute。
  • • 当用户再次访问该 HTTPRoute 时,Envoy Gateway 会从 Cookie 中获取 ID Token,验证该 ID Token 合法,并且未过期后,Envoy Gateway 会将请求转发给后端服务。

从图中可以看到,虽然 OIDC 单点登录的过程比较复杂,但都是由 Envoy Gateway 来完成的。对于应用程序来说,这个过程其实是无感知的,应用程序无需修改任何代码,就可以实现单点登录。jnj28资讯网——每日最新资讯28at.com

采用 Envoy Gateway 为应用实现单点登录

采用 Envoy Gateway 可以简化应用关于用户登录的实现,应用程序无需在代码中实现和 OIDC Provicer 交互的相关逻辑,只需要在 Envoy Gateway 的安全策略中配置 OIDC 的相关参数,在十分钟内可实现应用的 OIDC SSO。下面我们通过一个例子来演示如何在 Envoy Gateway 中配置 OIDC。jnj28资讯网——每日最新资讯28at.com

配置 OIDC Provider

Envoy Gateway 支持所有实现了 OIDC 标准的 Identify Provider,包括 Google、微软、Auth0、Okta、微信、微博等等。下面我们以 Google 账户登录为例介绍如何为 Envoy Gateway 配置 OIDC SSO。jnj28资讯网——每日最新资讯28at.com

首先需要参照 Google 的 OpenID Connect 文档 ⁶ Google Cloud Platform 中创建一个 OAuth Client ID。jnj28资讯网——每日最新资讯28at.com

打开 Google Cloud Console 的 Credentials 界面,点击 Create Credentials -> OAuth client ID,然后选择 Web application,输入应用的名称,设置 Authorized redirect URLs 为 https://www.example.com/oauth2/callback,然后点击 Create 按钮创建 OAuth Client ID。jnj28资讯网——每日最新资讯28at.com

图片图片jnj28资讯网——每日最新资讯28at.com

备注:Envoy Gateway 采用 %REQ(x-forwarded-proto)%://%REQ(:authority)%/oauth2/callback 作为默认的 OIDC 回调地址,因此需要将 Authorized redirect URLs 设置为 https://www.example.com/oauth2/callback。jnj28资讯网——每日最新资讯28at.com

创建成功后,会弹出一个页面显示创建的 OAuth client 的信息,记录下其中的 Client ID 和 Client Secret,这两个值将会用于后面的 Envoy Gateway 安全策略配置中。jnj28资讯网——每日最新资讯28at.com

图片图片jnj28资讯网——每日最新资讯28at.com

配置 Envoy Gateway 安全策略

首先参照 Envoy Gateway Quickstart ⁷ 安装 Envoy Gateway 和例子程序。根据 OIDC 规范的建议,Envoy Gateway 要求配置 OIDC 的 Listener 采用 HTTPS 协议,因此前参照 Secure Gateway ⁸为 Envoy Gateway 配置 HTTPS。jnj28资讯网——每日最新资讯28at.com

创建一个 Kubernetes Secret,用于存储 OAuth Client 的 Client Secret。jnj28资讯网——每日最新资讯28at.com

注意将 ${CLIENT_SECRET} 替换为上面创建的 OAuth Client 的 Client Secret。jnj28资讯网——每日最新资讯28at.com

$ kubectl create secret generic my-app-client-secret --from-literal=client-secret=${CLIENT_SECRET}secret "my-app-client-secret" created

然后在 Envoy Gateway 中配置 OIDC SSO,首先需要在 Envoy Gateway 中配置一个安全策略,该安全策略用于配置 OIDC SSO 的相关参数。jnj28资讯网——每日最新资讯28at.com

注意将 ${CLIENT_ID} 替换为上面创建的 OAuth Client 的 Client ID。jnj28资讯网——每日最新资讯28at.com

cat <<EOF | kubectl apply -f -apiVersion: gateway.envoyproxy.io/v1alpha1kind: SecurityPolicymetadata:  name: oidc-examplespec:  targetRef:    group: gateway.networking.k8s.io    kind: HTTPRoute    name: backend  oidc:    provider:      issuer: "https://accounts.google.com"    clientID: "${CLIENT_ID}.apps.googleusercontent.com"    clientSecret:      name: "my-app-client-secret"EOF

上面短短十来行配置就会将 OIDC SSO 应用到名为 backend 的 HTTPRoute 上。这样,当客户端请求访问该 HTTPRoute 时,就会被重定向到 Google 页面进行用户验证 。除了 HTTPRoute,Envoy Gateway 还支持将 SecurityPolicy 应用到 Gateway 上,只要将 targetRef 指向 Gateway 即可。jnj28资讯网——每日最新资讯28at.com

验证单点登录

如果集群有对外暴露的 LoadBalancer,可以直接通过 LoadBalancer 的地址访问 Envoy Gateway。如果集群没有对外暴露的 LoadBalancer,可以通过 Port-Forward 的方式将 Gateway 的端口映射到本地,例如:jnj28资讯网——每日最新资讯28at.com

export ENVOY_SERVICE=$(kubectl get svc -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsnotallow='{.items[0].metadata.name}')sudo kubectl -n envoy-gateway-system port-forward service/${ENVOY_SERVICE} 443:443

将 Envoy Gateway 的地址配置到 DNS 中,例如将 www.example.com 配置到 Envoy Gateway 的地址。jnj28资讯网——每日最新资讯28at.com

127.0.0.1 www.example.com

首先在浏览器中访问 Envoy Gateway 的地址,例如 https://www.example.com,Envoy Gateway 会根据 OIDC 的配置引导用户进行登录。浏览器会跳转到 Google 的登录页面。jnj28资讯网——每日最新资讯28at.com

图片图片jnj28资讯网——每日最新资讯28at.com

输入 Google 账户的用户名和密码,登录成功后,会跳转到应用的首页。jnj28资讯网——每日最新资讯28at.com

图片图片jnj28资讯网——每日最新资讯28at.com

总结

单点登录(SSO)简化了用户体验,使用户能够在访问多个应用时只需一次登录。但是,实现单点登录并不容易,需要应用程序实现和认证服务器的交互逻辑,增加了应用程序的开发工作量。Envoy Gateway 在最新版本中的安全策略中提供了 OpenID Connect (OIDC) 的能力,采用 Envoy Gateway 的安全策略,让应用程序无需修改任何代码即可轻松实现基于 OIDC 的单点登录(SSO)。jnj28资讯网——每日最新资讯28at.com

参考链接

  1. 1. OpenID Connect (OIDC) ¹:https://openid.net/specs/openid-connect-core-1_0.html
  2. 2. OAuth 2.0 ²:https://datatracker.ietf.org/doc/html/rfc6749
  3. 3. JSON Web Token (JWT)³:https://jwt.io
  4. 4. 阮一峰:OAuth 2.0 介绍⁴:https://www.ruanyifeng.com/blog/2019/04/oauth_design.html
  5. 5. Authorization Code Flow ⁵ :https://datatracker.ietf.org/doc/html/rfc6749#section-4.1
  6. 6. Google OpenID Connect 文档 ⁶:https://developers.google.com/identity/openid-connect/openid-connect
  7. 7. Envoy Gateway Quickstart ⁷ :https://gateway.envoyproxy.io/latest/user/quickstart
  8. 8. Secure Gateway ⁸:https://gateway.envoyproxy.io/latest/user/secure-gateways

本文链接:http://www.28at.com/showinfo-26-42228-0.htmlEnvoy Gateway:十分钟搞定单点登录(SSO)!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 热门的消息队列框架比较、使用方法、优缺点,提供示例代码

下一篇: 并发情况如何实现加锁来保证数据一致性?

标签:
  • 热门焦点
  • iPhone卖不动了!苹果股价创年内最大日跌幅:市值一夜蒸发万亿元

    8月5日消息,今天凌晨美股三大指数高开低走集体收跌,道指跌0.41%;纳指跌0.36%;标普500指数跌0.52%。热门科技股也都变化极大,其中苹果报181.99美元,跌4.8%,创
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人&ldquo;珍藏&rdquo;是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
Top