OAuth2访问宇宙&x27;FIWARE实验室中的WebHDFS

OAuth2访问宇宙&x27;FIWARE实验室中的WebHDFS,fiware,fiware-cosmos,Fiware,Fiware Cosmos,我最近看到FIWARE实验室中对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" Aut

我最近看到FIWARE实验室中对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

是的,现在WebHDFS访问受OAuth2保护。这是在FIWARE中保护RESTAPI的通用机制的一部分,它执行身份验证和授权。你可以找到更多的细节

首先,您必须向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实验室凭据,其形式为基于密码的授权类型

一旦获得访问令牌(在上面的示例中,它是
qjhpunw6leyaqr3xw34dwlqlja0ix
),只需将其添加到您过去执行的同一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":[...]}}
如果您使用随机令牌尝试上述请求,服务器将返回无效令牌;这是因为您尚未正确验证:

同样,如果使用有效的令牌但试图访问另一个HDFS用户空间,您将得到相同的答案;这是因为您无权访问任何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“-H”内容类型:application/X-www-form-urlencoded“-d”grant_Type=密码和用户名=user@domain.com&password=您的密码“-k

url不正确,正确的是


-K是用于关闭证书验证

为什么使用<代码> X-Auth-ToeS/<代码>(OpenStack标头),而不是使用OAuS2标准中使用的标头:<代码>授权< /代码>?我们在中间使用FiWordPIP代理()。该组件在这篇文档中指定了
X-Auth-Token
的用法:。您使用
-k
选项是对的,我忘了放它(谢谢!)。关于端点,
cosmos.lab.fiware.org
cosmos.lab.fi-ware.org
都解析为相同的IP地址。使用-k被认为是除本地开发之外的最糟糕的做法。fi ware何时安装第三方验证的ssl证书?
$ 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