SAML & CA SSO (SiteMinder) & OAuth2 & OpenID & FIDO & Kerberos & JWT & OIDC(OpenID Connect) 身份认证协议
FIDO, OAuth2, CA SSO 对web服务实际效用会更好一些
SAML
用户登录 identity provider
用户请求访问 service provider 提供的内容
service provider 重定向请求,向 identity provider 要求验证用户登录信息
identity provider 用 X.509 证书 签名认证用户已登录,以XML形式传给 service provider
service provider 据此对用户授权访问
CA SSO (SiteMinder)
Designing a CA Single Sign-On Architecture for Enhanced Security
传统统一登录cookie的问题之一是一次登录,全站有效。一站泄漏cookie,全站影响。
改进方案是,一次登录到一个cookie provider,如login.ca.com
由cookie provider对该域下的不同服务站点,分发不同的cookie。例如app1.ca.com的cookie与app2.ca.com的cookie不同。
此时可以把窃取cookie漏洞的影响问题限定在该漏洞子站内。
OAuth2
OpenID & OIDC (OpenID Connect)
Authentication and Authorization: OpenID vs OAuth2 vs SAML
OpenID 基于xml,部署比较麻烦。
OIDC 改成在 OAuth2 的基础上,使用RESTful HTTP & JSON实现OpenID的功能,提供identity统一认证信息
A Framework To Implement OpenID Connect Protocol For Federated Identity Management In Enterprises
RP (Client) 向 OP 请求验证,
End-User 登录 OP
OP向RP返回认证应答
RP从OP获取用户信息
FIDO
FIDO (Fast Identify Online) 笔记
Kerberos
Kerberos的关键在于KDC的安全性。
client 事先与 KDC 有共享密钥,server 事先与 KDC 也有共享密钥。
client 向 KDC 请求票据,再根据该票据向server请求资源。
票据是时间敏感的。
JWT
RFC7515 ~ RFC7519
5 Easy Steps to Understanding JSON Web Tokens (JWT)
JWT: The Complete Guide to JSON Web Tokens
本质上是以json形式传输的bear token,可以在Authorization: Bearer <token>
头部传输,此时由于不在cookie中,可以天然避开cors问题。
由 header.payload.signature 三部分组成。其中,header, payload默认是json格式,base64url编码。
signature 由 header.payload 加secret 组合计算hmac256得到。
此时,server可以快速校验payload里的用户信息的合法性,授权资源。缓解传统的session/cookie查找资源问题。
signature也可以使用rsa/ecdsa等签名算法生成。
如果payload中有部分敏感内容被加密,则server需要有对应的解密配置。
优点在于server端非常容易对token做轮转,json内容简单,且避开了cookie的cors等问题。缺点在于提高了对secret的安全性依赖。