权限把主体、对象与操作联系起来

同一用户可获准查看某份文件,却不能修改或删除它。授权必须表达操作和对象,不能只保留一个没有范围的“已获准”标志;主体也可以是代表组织执行任务的服务,而不一定是直接坐在浏览器前的人。

认证提供账户或请求者证据,授权把这些证据与政策相结合。NIST的ABAC术语还允许按相关属性作决定,不必总在规则里逐一写出每个人的名字;是否允许当前请求,取决于适用规则,而不是单看登录成功。

参考:[1]

委托不必交出所有账户凭据

OAuth把资源所有者、客户端、授权服务器和资源服务器分成不同角色。客户端可凭授权获得访问令牌,再由资源服务器验证请求;这让“允许应用处理一部分资料”与“把账户密码交给应用”成为可分开的事情。

客户端请求的scope不是最终保证。RFC 6749允许授权服务器根据政策或资源所有者指示缩小请求范围,并在实际范围不同的情况下告知客户端;界面申请了读写,并不证明最终令牌同时具备两项权限。

参考:[2]

决定必须在实际资源处得到执行

授权结果最终要约束实际操作。NIST区分作出策略决定的功能与执行决定的功能,两者可以部署在不同组件;如果某个入口只生成许可结论,另一个入口却不采用它,纸面政策不会自动阻止那里的访问。

OAuth安全最佳实践还要求限制令牌的目标资源服务器、资源及动作,并由资源服务器逐次核对相应适用性。给另一服务签发的有效令牌,或只允许读取的令牌,不能因为签名有效便被用来执行本站写入。

参考:[1] [3]