一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
背景
iam 系统,全称 identiity and access management, 身份识别与访问管理,解决的是谁能够对你哪些资源做哪些操作,关键词是操作人,资源,操作。
什么是认证
在 iam 系统中,操作的流程是:
- 用户注册并登录到 iam 系统,此时用户用的是注册信息登录
- 创建自己的密钥资源
- 创建授权策略
- 这时候其它用户对某个资源进行操作,就需要看是否符合授权策略
这里首先要说一下认证和授权的区别是什么:
- 认证(authentication, authn):验证某个用户是否有访问系统的权限
- 授权(authorization, authz):验证某个用户是否具有访问某个资源的权限 即认证通常是授权的基础,首先决定了你是谁,然后决定了你能做什么。对应到咱们常用的 sso 与 acl,sso 就是单点登录,是认证,通过 acl,access control list,访问控制列表,表示了你能做什么。
认证方式
有以下几种常见的认证方式:
- basic:这种方式认证较为简单,直接把账号密码转成 base64 放到 authorization header 中,通常需要配合ssl使用,不安全
- digest:摘要认证,它有以下四个步骤:1.客户端请求,服务端返回401 unauthorized,返回 www-authenticate 头,里面包含需要认证的信息;2. 客户端根据服务端返回的信息计算出摘要 response,再请求服务端;3. 服务端对客户端的摘要与服务器内部计算的摘要对比,同意则认证通过。
- oauth:开放授权,是一个开放的授权标准,允许用户让三方应用访问用户在web服务上存储的私密资源,而不需要将用户名和密码提供给用户。
- bearer: 也称为令牌认证,前端发请求的时候带上一个 bearer token,服务端通过验证 token 确认用户是否通过认证。