基于密码模式,你能说明生成 Token 需要哪些具体的开发步骤吗?

281 阅读2分钟

基于密码模式,你能说明生成 Token 需要哪些具体的开发步骤吗?

4种授权模式:

  • 密码模式(resource owner password credentials)

  • 客户端模式(client_credenruals)

  • 授权码模式(authorization_code)

  • 简化模式(implicit)

密码模式(resource owner password credentials):

在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。

httpatomoreillycomsourceoreillyimages986441.png

(A)用户向客户端传参username、password获取token。

(B)授权服务器校验客户端提交的的凭证(Credential)。

  • 凭证(Credential)以下是必需的POST参数:

grant_type(表示授权类型,此处的值固定为”password”,必选项)

scope(表示权限范围,如webclient,mobileclient可选项)

client_id(注册时返回的值)

client_secret(注册时返回的值)

username(表示用户名,编码格式为UTF-8,必选项)

password(表示用户的密码,编码格式为UTF-8,必选项)

(C)授权服务器确认无误后,向客户端返回application/json包含以下内容的响应acceptToken。

  • 密码模式resource owner password credentials的acceptToken

access_token(用于用户访问API的访问令牌,用于资源访问

Key(Value)

  • 授权码模式authorization_code的acceptToken

响应参数如下:

access_token(用于用户访问API的访问令牌,用于资源访问)

refresh_token(当访问令牌失效,使用这个令牌重新获取访问令牌)

token_type(令牌类型,这里是Bearer基于HTTP认证)

expire_in(过期时间)

如果访问令牌仅具有短期生命周期,那么客户端必须有一种方法来刷新访问令牌,这一点很重要。

(D)return login success