我正在尝试使用JWT访问令牌创建oAuth策略来保护API。可以通过调用外部URL来验证该令牌。
我使用以下RAML作为我的Mule代理。
#%RAML 1.0
title: Custom API
version: 1
baseUri: http://localhost:8081
securitySchemes:
oauth_2_0:
description: |
This API supports OAuth 2.0 for authenticating all API requests.
type: OAuth 2.0
describedBy:
headers:
authorization:
description: |
Used to send a valid OAuth 2 access token. Do not use with the "access_token" query
string parameter.
type: string
responses:
401:
description: |
Bad or expired token. This can happen if the user or the API revoked or expired an
access token. To fix, you should re-authenticate the user.
403:
description: |
Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately,
re-authenticating the user won't help here.
/hello:
get:
securedBy: [oauth_2_0]
但是,mule在验证外部服务时无法发送Authorization标头。
答案 0 :(得分:0)
您发布的RAML很好,但仅提供信息。您必须将JWT oAuth令牌强制执行功能实现为自定义策略或作为Mule流的一部分。目前,没有针对JWT令牌验证的开箱即用政策。
通常,为了验证令牌,调用外部端点,将令牌作为内部[策略]请求的一部分。这意味着策略本身将解析传入的用户请求,并从查询参数或授权标头中删除令牌(删除承载部分)。 AFAIK,授权标头永远不会发送到内省令牌URL。