OAuth2访问FIWARE Lab中的Cosmos'WebHDFS

时间:2015-07-02 14:55:37

标签: fiware fiware-cosmos

我最近看到FIWARE Lab中对Cosmos的WebHDFS的访问受到了OAuth2的保护。我知道我必须在请求中添加OAuth2令牌才能继续使用WebHDFS,但是:

  • 我如何获得令牌?
  • 如何将令牌添加到请求中?

如果没有令牌,API始终返回:

$ 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

2 个答案:

答案 0 :(得分:3)

是的,现在WebHDFS访问受OAuth2保护。这是在FIWARE中预检REST API的一般机制的一部分,它执行身份验证和授权。您可以找到更多详细信息here

首先,您必须向Cosmos令牌生成器请求OAuth2令牌。这是在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 Lab凭据,采用基于密码的授权类型。

获得访问令牌后(在上面的例子中,它是qjHPUcnW6leYAqr3Xw34DWLQlja0Ix),只需将其添加到您过去执行的同一WebHDFS请求中。使用X-Auth-Token标头添加令牌:

$ 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":[...]}}

如果您使用随机令牌尝试上述请求,服务器将返回令牌无效;那是因为你没有正确认证

$ 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

同样,如果使用有效令牌但尝试访问另一个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.orgcomputing.cosmos.lab.fiware.org。关于Cosmos的auth服务器,它目前运行在computing.cosmos.lab.fiware.org,端口TCP / 13000。

答案 1 :(得分:1)

正确的要求必须是:

curl -X POST" https://cosmos.lab.fi-ware.org:13000/cosmos-auth/v1/token" -H"内容类型:application / x-www-form-urlencoded" -d" grant_type = password& username = user@domain.com& password = yourpassword" -k

网址不正确,正确为https://cosmos.lab.fi-ware.org:13000

-k用于关闭证书验证