一、一些概念:
1、认证:主要解决的是你是谁的问题。
三个层面认证:信道认证(SSL等),协议认证(例如用http协议的时候的格式),内容认证(比如浏览网页的时候,网页对访问者的认证)
2、授权:是要解决你能干什么。
①授权过程可靠:oath2
②授权结果可靠:
基于属性的访问控制(Attribute-Based Access Control,ABAC)
基于角色的访问控制(Role-Based Access Control,RBAC)
3、凭证:用什么去证明(什么样的令牌不同加密算法得到的令牌不一样)
二、oath2:面向于解决第三方应用(Third-Party Application)的认证授权协议。
1、例子:
比如你是某个景点的管理员,拥有对这个景点的所有权限。你进入的时候刷脸可以进景点的任意地方。
小明想来参观,对于你来说,就是第三方。
小明想来景点参观,他总不能用你的脸,所以会在你这买票,然后凭借门票进景点参观。(用门票代替管理员的人脸)
但是他不能去景点中的任意地方,因为不同的门票可能权限不同。
2、大概流程:
授权模式是什么:
例子中通过门票代替管理员人脸,在应用中通过令牌代替密码给第三方应用,让它可以操作。
具体就是:要求 / 同意授权”“要求 / 同意发放令牌”“要求 / 同意开放资源 这几个动作。
那么这几个服务请求、响应要如何设计衍生出了四种模式:
授权码模式、简化模式(Implicit)、密码模式、客户端模式(Client Credentials)