四种获得令牌的方式:授权码、隐藏式、密码式、客户端凭证。不管哪种授权方式,第三方应用申请拿到令牌之前,都必须到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端ID和客户端秘钥。这是为了防治令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。
令牌是有过期时间的,没必要让用户在令牌失效之后重新走一遍令牌产生流程,在颁发令牌的时候一次性颁发两个令牌,一个用于获取数据另一个用于获取新的令牌(refresh token)字段。令牌到期之前,用户使用refreshtoken发送一个请求去更新令牌。
【授权码】:第三方应用先申请一个授权码,然后再用该码获取令牌。请求授权码返回授权码请求令牌返回令牌。
【隐藏式】允许直接向前端发送令牌,这种方式没有授权码这个中间步骤,所以称为(授权码)隐藏式。请求令牌返回令牌。直接把令牌传给前端很不安全,只能用一些安全性不高的场合,并且令牌的有效期必须非常短,会话session有效,浏览器关掉,令牌就失效了。
【密码式】高度信任某而过应用的时候,允许用户把用户名和密码直接告诉该应用,应用就使用你的密码申请令牌,直接把令牌放http的JSON返回数据里面。密码式安全性不高一般不会应用。除非非常信任当前应用。
【凭证式】适用于没有前端的命令行应用,即在命令行下请求令牌。与验证后直接返回令牌。