1、SAML 2.0 常用身份验证登录(非第三方登录)
1.1 还 未登陆 的用户 打开浏览器 访问你的网站(SP),网站 提供服务 但是并 不负责用户认证。
1.2 于是 SP 向 IDP 发送了一个 SAML 认证请求,同时 SP 将 用户浏览器 重定向到 IDP。
1.3 IDP 在验证完来自 SP 的 请求无误 之后,在浏览器中呈现 登陆表单 让用户填写 用户名 和 密码 进行登陆。
1.4 一旦用户登陆成功, IDP 会生成一个包含 用户信息(用户名 或者 密码)的 SAML token(SAML token 又称为 SAML Assertion,本质上是 XML 节点)。IDP 向 SP 返回 token,并且将 用户重定向 到 SP (token 的返回是在 重定向步骤 中实现的,下面会详细说明)。
1.5 SP 对拿到的 token 进行验证,并从中解析出 用户信息,例如 用户是谁 以及 用户的权限 有哪些。此时就能够根据这些信息允许用户访问我们网站的内容。
2、OAUTH2.0 第三方登录实现原理
2.1 用户通过 客户端(可以是 浏览器 也可以是 手机应用)想要访问 SP 上的资源,但是 SP 告诉用户需要进行 认证,将用户 重定向 至 IDP。
2.2 IDP 向 用户 询问 SP 是否可以访问 用户信息。如果用户同意,IDP 向 客户端 返回 authorization code。比如,用户在微信同意授权后,返回给一个携带用户信息的认证token给客户端,注意不是api访问的授权token。
2.3 客户端拿到 authorization code 向 IDP 交换 access token,并拿着 access token 向 SP 请求资源。
2.4 SP 接受到请求之后,拿着附带的 token 向 IDP 验证 用户的身份。确认身份无误后,SP 向 客户端 发放相关资源。