在Postman中,JWT (JSON Web Token) 主要用于通过 Bearer Token 进行API请求的认证。JWT 是一种用于身份验证和信息交换的紧凑、URL安全的令牌,广泛应用于OAuth 2.0等认证协议中。它通常由三个部分组成:Header、Payload 和 Signature,通过“点号”分隔,如下所示:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT 的三个部分:
1. Header (头部):
- 包含两部分:签名算法和令牌类型。
- 通常是类似于下面的JSON对象:
{"alg":"HS256",
"typ":"JWT"}
- Base64Url编码后组成JWT的第一部分。
Payload (有效载荷):
- 这是JWT的主体部分,包含声明(claims),可以是关于用户或其他数据的声明。
- 一些标准声明包括: - iss(发行者)- exp(过期时间)- sub(主题)- aud(受众) 例如:
{"sub":"1234567890",
"name":"John Doe",
"admin":true}
Base64Url编码后形成JWT的第二部分。
Signature (签名):
通过对Header、Payload进行编码后,再使用密钥与指定的算法对数据进行签名,防止数据被篡改。
签名公式如下:
HMACSHA256(
base64UrlEncode(header) + "." + base64UrlEncode(payload),
secret
)
这样就形成了JWT的第三部分。
JWT 是如何工作的?
- 客户端认证: 当用户登录时,身份验证服务器会验证用户的身份。验证通过后,服务器会生成一个JWT,并将其返回给客户端。
- JWT的使用: 客户端在后续的请求中,将这个JWT作为认证凭证发送给服务器(通常在请求头部的 Authorization: Bearer 中)。
- 服务器验证: 服务器收到请求后,会验证JWT的签名和有效性,验证通过后允许访问受保护的资源。
如何在Postman中添加JWT Token?
- 获取JWT Token:
- JWT通常通过身份验证或授权系统获取。常见的方法有:
- 使用 OAuth 2.0 登录授权获取。
- 调用授权服务器的登录接口(如Keycloak、Auth0等),使用用户凭证(用户名和密码)获取Token。
- 步骤1:获取Token (使用Postman获取JWT):
- 使用POST请求获取Token,例如:
POST http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token
- 在Body中选择x-www-form-urlencoded,并输入以下字段:- grant_type: password- client_id: - client_secret: (如果客户端为confidential类型)- username: - password: - scope: openid 发送请求后,返回的响应中会包含一个access_token,这是JWT的一种形式。
- 步骤2:在Postman中设置Authorization:
- 拿到access_token之后,你可以在Postman中将其用于后续的API请求。
- 打开需要认证的API请求。
- 选择 Authorization 选项卡。
- 在 Type 中选择 Bearer Token。
- 在 Token 输入框中粘贴你的JWT access_token。
- 步骤3:发送请求:
- 完成设置后,Postman将会在HTTP请求头部自动添加类似以下的授权信息:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
- 现在你可以发送带有Token的请求到受保护的API。
JWT Token 从哪些地方可以获取?
- 通过身份验证服务器获取:
- 大多数情况下,JWT由身份验证服务器颁发,像Keycloak、Auth0、AWS Cognito等身份提供商都能颁发JWT。
- 你可以通过登录流程(OAuth 2.0、OpenID Connect)来获取Token。
- 从登录API获取:
- 应用程序在登录时,通常会通过POST请求将用户凭证发送给服务器,服务器在验证通过后,返回JWT Token。
- 通过开发者工具手动生成:
- 在开发和测试过程中,可以手动生成JWT,例如使用在线工具 JWT.io。
- 使用开发者工具时,你需要指定正确的Header、Payload,并使用密钥进行签名。
总结
- JWT Token 是一种用于认证和信息交换的轻量级令牌。
- 你可以通过身份验证服务器获取JWT Token(例如通过登录或OAuth授权流程)。
- 在Postman中,你可以将JWT作为Bearer Token,设置到请求的Authorization头部,进行API请求认证。
- 常见的JWT获取方式包括通过身份提供商(如Keycloak、Auth0)或者自定义API的登录端点。 通过这些步骤,你就可以在Postman中成功使用JWT进行认证请求。
版权归原作者 Smile sea breeze 所有, 如有侵权,请联系我们删除。