OAuth2 在 FIWARE 实验室中访问 Cosmos 的 WebHDFS
OAuth2 access to Cosmos' WebHDFS in FIWARE Lab
我最近看到在 FIWARE 实验室中对 Cosmos 的 WebHDFS 的访问受到了 OAuth2 的保护。我知道我必须向请求添加 OAuth2 令牌才能继续使用 WebHDFS,但是:
- 如何获得令牌?
- 如何将令牌添加到请求中?
没有令牌,API 总是 returns:
$ curl -X GET "http://cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/gtorodelvalle?op=liststatus&user.name=gtorodelvalle"
Auth-token not found in request header
是的,现在 WebHDFS 访问受 OAuth2 保护。这是 FIWARE 中用于保护 REST API 的通用机制的一部分,它执行身份验证和授权。您可以找到更多详细信息 here.
首先,您必须向 Cosmos 令牌生成器请求一个 OAuth2 令牌。这是一项服务 运行ning cosmos.lab.fiware.org:13000
。您可以使用任何 REST 客户端执行此操作,最简单的方法是使用 curl 命令:
$ curl -k -X POST "https://cosmos.lab.fiware.org:13000/cosmos-auth/v1/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&username=frb@tid.es&password=xxxxxxxx"
{"access_token": "qjHPUcnW6leYAqr3Xw34DWLQlja0Ix", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "V2Wlk7aFCnElKlW9BOmRzGhBtqgR2z"}
如您所见,负载中需要您的 FIWARE 实验室凭据,形式为 password-based 授权类型。
获得访问令牌后(在上面的示例中,它是 qjHPUcnW6leYAqr3Xw34DWLQlja0Ix
),只需将其添加到您过去执行的相同 WebHDFS 请求中即可。使用 X-Auth-Token
header:
添加令牌
$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/path/to/the/data?op=liststatus&user.name=frb" -H "X-Auth-Token: qjHPUcnW6leYAqr3Xw34DWLQlja0Ix"
{"FileStatuses":{"FileStatus":[...]}}
如果您使用随机令牌尝试上述请求,服务器将return令牌无效;那是因为你没有正确验证:
$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/path/tp/the/data?op=liststatus&user.name=frb" -H "X-Auth-Token: randomtoken93487345"
User token not authorized
同理,如果使用有效的token,但尝试访问另一个HDFS用户空间,你会得到相同的答案;那是因为您未被授权访问除您拥有的用户空间之外的任何 HDFS 用户空间:
$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/fgalan/path/tp/the/data?op=liststatus&user.name=fgalan" -H "X-Auth-Token: qjHPUcnW6leYAqr3Xw34DWLQlja0Ix"
User token not authorized
重要更新:
从 2016 年夏天开始,cosmos.lab.fiware.org
不再工作了。相反,已经设置了一对集群 storage.cosmos.lab.fiware.org
和 computing.cosmos.lab.fiware.org
。关于 Cosmos 的认证服务器,目前 运行 在 computing.cosmos.lab.fiware.org
,端口 TCP/13000.
正确的请求必须是:
curl -X POST "https://cosmos.lab.fi-ware.org:13000/cosmos-auth/v1/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&username=user@domain.com&password=yourpassword" -k
url不正确,正确的是https://cosmos.lab.fi-ware.org:13000
-k 为关闭证书验证
我最近看到在 FIWARE 实验室中对 Cosmos 的 WebHDFS 的访问受到了 OAuth2 的保护。我知道我必须向请求添加 OAuth2 令牌才能继续使用 WebHDFS,但是:
- 如何获得令牌?
- 如何将令牌添加到请求中?
没有令牌,API 总是 returns:
$ curl -X GET "http://cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/gtorodelvalle?op=liststatus&user.name=gtorodelvalle"
Auth-token not found in request header
是的,现在 WebHDFS 访问受 OAuth2 保护。这是 FIWARE 中用于保护 REST API 的通用机制的一部分,它执行身份验证和授权。您可以找到更多详细信息 here.
首先,您必须向 Cosmos 令牌生成器请求一个 OAuth2 令牌。这是一项服务 运行ning cosmos.lab.fiware.org:13000
。您可以使用任何 REST 客户端执行此操作,最简单的方法是使用 curl 命令:
$ curl -k -X POST "https://cosmos.lab.fiware.org:13000/cosmos-auth/v1/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&username=frb@tid.es&password=xxxxxxxx"
{"access_token": "qjHPUcnW6leYAqr3Xw34DWLQlja0Ix", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "V2Wlk7aFCnElKlW9BOmRzGhBtqgR2z"}
如您所见,负载中需要您的 FIWARE 实验室凭据,形式为 password-based 授权类型。
获得访问令牌后(在上面的示例中,它是 qjHPUcnW6leYAqr3Xw34DWLQlja0Ix
),只需将其添加到您过去执行的相同 WebHDFS 请求中即可。使用 X-Auth-Token
header:
$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/path/to/the/data?op=liststatus&user.name=frb" -H "X-Auth-Token: qjHPUcnW6leYAqr3Xw34DWLQlja0Ix"
{"FileStatuses":{"FileStatus":[...]}}
如果您使用随机令牌尝试上述请求,服务器将return令牌无效;那是因为你没有正确验证:
$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/path/tp/the/data?op=liststatus&user.name=frb" -H "X-Auth-Token: randomtoken93487345"
User token not authorized
同理,如果使用有效的token,但尝试访问另一个HDFS用户空间,你会得到相同的答案;那是因为您未被授权访问除您拥有的用户空间之外的任何 HDFS 用户空间:
$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/fgalan/path/tp/the/data?op=liststatus&user.name=fgalan" -H "X-Auth-Token: qjHPUcnW6leYAqr3Xw34DWLQlja0Ix"
User token not authorized
重要更新:
从 2016 年夏天开始,cosmos.lab.fiware.org
不再工作了。相反,已经设置了一对集群 storage.cosmos.lab.fiware.org
和 computing.cosmos.lab.fiware.org
。关于 Cosmos 的认证服务器,目前 运行 在 computing.cosmos.lab.fiware.org
,端口 TCP/13000.
正确的请求必须是:
curl -X POST "https://cosmos.lab.fi-ware.org:13000/cosmos-auth/v1/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&username=user@domain.com&password=yourpassword" -k
url不正确,正确的是https://cosmos.lab.fi-ware.org:13000
-k 为关闭证书验证