我目前正在处理一组应用程序,这些应用程序在两个不同但等效的环境中运行(称为ENV1
和ENV2
)。我一直在使用OAuth 2.0进行授权,当我从OAuth服务请求访问令牌后收到响应时(我是通过Postman发出请求的),我会从ENV1
和 ENV2
得到类似以下的响应:
"token_type": "Bearer"
的意思是,当我向我的应用程序发送access_token
时,我需要这样做:
通过在头部添加 "Bearer" 前缀的 Authorization
标头发送令牌。这种方法在 ENV1
上可以正常工作,但在 ENV2
上请求失败,除非我只发送令牌而不带有 "Bearer" 前缀。
如果我在Authorization
头部中带有“Bearer”前缀发送请求,响应会返回401 Unauthorized
错误。这是Postman提供的帮助提示(重点是我的):
问题在于这里确实存在一个类似于403 Forbidden,但特别用于身份验证可能已失败或尚未提供的情况。响应必须包含一个WWW-Authenticate头字段,其中包含适用于所请求资源的挑战。
WWW-Authenticate
头字段,并且它包含“Bearer”,我认为这是“适用于所请求资源的挑战”,因为令牌响应包含"token_type": "Bearer"
:
问题:
- 为什么在不同的环境下会有差异?
- 这怎么可能?我找到的OAuth 2.0文档显示,像我正在尝试进行的请求需要使用“Bearer”前缀。(例如,在文档的第2.1节此处中)