TOKEN的获取方式

TOKEN的获取方式

TOKEN是一种用于身份验证和授权的令牌,通常用于保护API和web应用程序的安全。获取token的过程因不同的认证和授权机制而异,但常见的方法包括以下几种:

一.基于用户名和密码的认证

这是最常见的获取TOKEN的方式之一,通常涉及以下几个步骤:

1.客户端发送请求:客户端(如浏览器或移动应用)向服务器发送包含用户名和密码的登录请求。

POST /login HTTP/1.1

Host: example.com

Content-Type: application/json

{

"username": "user",

"password": "password"

}

2.服务器验证凭据:服务器接受请求并验证用户名和密码是否正确。

如果凭证正确,服务器生成一个token

如果凭证错误,服务器返回错误信息

3.服务器返回token:如果验证成功,服务器将生成的token返回给客户端

HTTP/1.1 200 OK

Content-Type: application/json

{

"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

}

4.客户端存储token:客户端受到token后,将其存储在本地(如浏览器的localstorage或sessionstorage中)。

二.OAUTH 2.0认证

OAUTH2.0是一种常用的授权框架,用于第三方应用程序访问受保护的资源。获取token的过程,通常包括一下几个步骤:

1.客户端请求授权:客户端引导用户授权访问授权服务器的授权页面

GET https://example.com/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=SCOPE

一般是qq、微信或则leetcode等其他应用网站,根据需要提供相应的信息比如(appid,AppSecret和登录回调地址等)

2.用户授权: 用户在授权页面上同意授权请求后,授权服务器将用户重定向回客户端制定的回调url,并附带一个授权码。

GET REDIRECT_URI?code=AUTHORIZATION_CODE

3.客户端请求token:客户端使用授权码向授权服务器请求token

POST /oauth/token HTTP/1.1

Host: example.com

Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

4.服务器返回token:授权服务器验证授权码和其他参数后,返回一个token

HTTP/1.1 200 OK

Content-Type: application/json

{

"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",

"token_type": "Bearer",

"expires_in": 3600,

"refresh_token": "REFRESH_TOKEN"

}

5.客户端存储token

三.JSON WEB TOKENS(JWT)

json web tokens是一种开放标准(RFC7519),用于在各方之间安全的传输信息,获取JWT的过程通常类似于基于用户名和密码的认证:

1.客户端发送请求: 客户端向服务器发送包含用户名和密码的登录请求

POST /login HTTP/1.1

Host: example.com

Content-Type: application/json

{

"username": "user",

"password": "password"

}

2.服务器验证凭据: 服务器验证用户名和密码是否正确

如果凭证正确,服务器生成一个JWT

如果凭据错误,服务器返回错误信息

3.服务器返回JWT,如果验证成功,服务器将生成的JWT返回给客户端

HTTP/1.1 200 OK

Content-Type: application/json

{

"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"

}

4.客户端存储JWT,将其存储到本地

使用token进行后续请求

无论通过哪种方式获取token,客户端在后续的请求中都需要将token包含在请求头中,以便服务器验证请求的有效性。

GET /protected-resource HTTP/1.1

Host: example.com

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

通过这种方式,服务器可以验证请求的来源,并确保只有经过授权的用户才能访问受保护的资源