OAuth2.0协议及单点登录应用

团队介绍

团队介绍

///

我们是光大科技有限公司安全管理团队,致力于提升光大集团信息安全防御能力,保障集团IT系统安全稳定运行,支撑集团业务发展;在集团“五统一”方针指引下,为集团成员企业提供定制化信息安全服务和安全产品,实现安全赋能;为金融科技行业提供有光大特色的信息安全解决方案及安全治理服务,提升光大科技品牌知名度。

我们拥有经验丰富的信息安全解决方案专家和技术专家,将持续与大家分享金融行业安全解决方案、企业信息安全架构和业界安全技术动态。期待与大家共同进步。

身份认证

随着公司业务与线上办公的发展,应用系统的的种类越来越多,重要性也不言而喻。身份认证就是系统安全的重要防线,我们要保证正确的身份及口令能访问正确权限的系统。

OAuth2.0协议及单点登录应用

为什么要用OAuth2.0

假设一个场景,有多个系统想获取某服务器上的受保护资源,各个系统都需要在本地登录并进行身份验证,这种场景下可能出现下列安全问题:

  1. 第三方应用为了获取所需资源,需要在自己的服务器上明文保存用户的私有证书,如用户名和密码,增加了泄露的风险,同时,如果一个应用收到攻击泄露了个人信息,则该用户在其他应用上也有很大的安全问题。

  2. 第三方应用访问资源时,无法被限制访问范围、访问时间和访问方式等,所有第三方应用的访问限制是一样的,可能应用获取的资源内容大于其所需要的资源等问题,产生安全风险。

  3. 用户想要回收权限时,不能单独回收某个应用的权限,修改密码等信息会同时取消所有的权限。

为了解决上述问题,一次登录的凭证可以访问多个应用,用户私有证书保存在一个数据库中,不必每个应用的数据库中都保存用户及密码,同时限制用户身份,不同身份可以访问不同的资源,可以采用标准身份协议。其过程包括认证和授权。认证是证明用户自己声明的自身身份,授权则是授予该身份可以访问的资源。

IAM在进行单点登录认证时常见的标准身份协议有SAML、OAuth2、OpenID等,OpenID只支持认证,不支持授权,OAuth2.0和SAML可以实现认证和授权,OAuth2.0采用的API授权,相比SAML对于移动端的支持更好。一般IAM产品会支持上述协议中的一种或几种,我们采用的是OAuth2.0。

OAuth2.0协议及单点登录应用

OAuth2.0-认证

OAuth2.0是一个授权的开放标准协议,而授权可以作为认证的一种形式,在各系统不记录用户密码的情况下,实现不同系统之间的资源共享。OAuth2.0协议意味着用户允许授权中心提供证明自己身份的访问令牌,授权中心获取用户的用户名和密码等信息进行验证,验证通过才会发放访问令牌,客户端的第三方应用再带着令牌代表用户获取资源服务器的资源,应用不会获取用户的密码等信息。

OAuth2.0协议及单点登录应用

OAuth2.0-授权

客户端的第三方应用在请求访问令牌时会带着想要请求的资源范围,授权中心会对比其范围不能大于用户预先拥有的范围,最后生成的访问令牌也附带用户资源范围、访问方式及时间等内容,这就是授权流程。

OAuth2.0协议及单点登录应用

OAuth2.0-授权方式

OAuth2.0定义了四个授权类型:客户端凭证授权、密码凭证授权、隐式授权与授权码授权。前三种授权方式需要的可靠前提非常多,在很难全部满足的情况下,一般考虑授权码授权。

授权码授权:通过使用授权服务器作为客户端和用户之间的中介,可以获取授权代码。客户端不是直接从用户获得授权,而是将用户的个人凭证发送到到授权服务器,然后授权服务器又将用户身份与授权码一起返回客户端。在将授权码返回客户端之前,授权服务器对用户进行身份验证并获得授权。用户只通过授权服务器进行身份验证,用户的账号密码等凭据不会传入客户端。

第三方应用程序获取授权码后,在利用授权码交换访问令牌,在这个过程中,授权码会经过浏览器,而访问令牌只在后端服务器交互,进一步防止了安全泄露的风险。

和访问令牌一起被发放的还有刷新令牌,刷新令牌暂时存储在第三方应用的数据库中,访问令牌到期时,第三方应用通过与授权服务器进行身份验证并提供刷新令牌来请求新的访问令牌,授权服务器对客户端进行身份验证并验证刷新令牌,如果有效,则颁发新的访问令牌以及新的刷新令牌。

OAuth2.0协议及单点登录应用

授权码授权详细流程

OAuth2.0协议及单点登录应用

图片来源于OAuth2.0官方文档

A、 客户端通过将资源所有者的用户代理定向到授权端点来启动流程。客户端包括其客户端标识符,请求的范围,本地状态和重定向URI,一旦授予或拒绝访问权限,授权服务器便会将用户代理发送回该重定向URI。

B、 授权服务器通过用户代理对资源所有者进行身份验证,并确定资源所有者是授予还是拒绝客户端的访问请求。

C、 假设资源所有者授予访问权限,授权服务器使用先前提供的重定向URI将用户代理重定向回客户端。重定向URI包括授权码和客户端之前提供的本地状态。

D、 客户端通过包括上一步中收到的授权代码,从授权服务器的令牌端点请求访问令牌。发出请求时,客户端向授权服务器进行身份验证。

E、 授权服务器对客户端进行身份验证,验证授权代码,并确保在步骤C中收到的重定向URI与用于重定向客户端的URI一致。如果有效,授权服务器将发放访问令牌和刷新令牌。

OAuth2.0协议及单点登录应用

IAM应用详细流程

用户点击应用:用户在IAM系统中点击应用系统的链接进行跳转,应用系统判断是否登录,构造URL并重定向此URL到IAM平台。URL中包括客户端id、重定向URI、授权类型及范围等信息。

获取授权码code:浏览器通过构造URL访问访问IAM平台,IAM平台生成code,重定向到新的应用URL。URL中包括授权码code、redirect_uri及应用状态信息。

获取访问令牌token:浏览器通过新的URL访问应用系统,应用系统获取code,构造URL,并在服务端后台,发起http POST请求URL,IAM验证code后,平台返回有token的json串。json串中包括访问令牌access_token、刷新令牌refresh_token及过期时间。

登录应用:应用系统根据json串中的访问令牌access_token在服务器后台,向IAM平台发起http POST,IAM验证访问令牌后返回应用账号,重定向到应用主页URL。

往期回顾

1

DevOps持续部署实践之特性开关

2

金融智变,云管未来-智能多云管理平台(AICMP)

3

HTTPS为何封神,密码学是如何将其推向神座

4

Nginx常见配置总结

欢迎关注EBCloud

作者:李薇

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33520.html

(0)
EBCloud's avatarEBCloud
上一篇 2024年4月2日 下午3:28
下一篇 2024年4月2日 下午3:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注