本文首发于我的博客 https://teobler.com 转载请注明出处
SSO是什么
在了解SSO是什么之前,我们需要搞清楚两个概念: Authentication & Authorization
。
Authentication(又被称为AuthN,身份验证),它指的是 the process of verifying that "you are who you say you are"
,也就是说这个过程是为了证明你是你。通常来说有这么几个方式:
- Single-factor - 也就是可以通过单一的因素证明”你是你“,比如密码、PIN码
- Multi-factor - 有时候
Single-factor
没有办法保证”你是你“,就会需要一些多重验证的手段,比如动态口令、生物识别等 - 上面提到的是两种用的比较多的手段,还有一些其他的,比如安全问题,短信,email认证等等
Authorization(又被称为AuthZ,权限验证),他指的是 the process of verifying that "you are permitted to do what you are trying to do"
,也就是说这个过程是为了证明你是否拥有做这件事的权限,比如修改某个表格等等,如果没有权限的话通常会返回 403
错误码。
在 SSO
出现之前,用户在不同的系统登录就需要在不同的系统注册多个账号,然后需要自己记住多个用户名和密码,而如果这些系统是同一个平台的话,其实该平台还需要维护多套几乎一模一样的登录系统,给用户和平台都带来了负担。
而 SSO
就是一种authentication scheme(身份验证方案),SSO
允许用户使用同一个账户登录不同的系统,很好地解决了上述的问题。它不但可以实现单一平台的登录,假如某个平台之外的系统是信任该平台的,那么外部系统也可以集成这个平台的 SSO
, 比如现在的大多数网站都提供了 Google
账号登录的功能。
要实现 SSO
,首先需要你正在开发的系统信任这个第三方登录系统所提供的用户信息,然后你需要按照一定的标准和协议去与其对接,接下来我们会介绍两个比较常用的 SSO
协议 – SAML 2.0 和 OIDC。
SAML 2.0
SAML 2.0是什么
SAML
是 Security Assertion Markup Language
的简称,是一种基于XML的开放标准协议,用于在身份提供者(Identity Provider简称IDP)和服务提供商(Service Provider简称SP)之间交换认证和授权数据。
SAML 2.0是该协议的最新版本,于2005年被结构化信息标准组织(OASIS)批准实行。