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

  • 如何获取 token ?
  • 如何将 token 添加到请求中?

  • 没有 token ,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中保护REST API的通用机制的一部分,该机制执行身份验证和授权。您可以找到更多详细信息here

    首先,您必须向Cosmos token 生成器请求OAuth2 token 。这是一个在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&[email protected]&password=xxxxxxxx"
    {"access_token": "qjHPUcnW6leYAqr3Xw34DWLQlja0Ix", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "V2Wlk7aFCnElKlW9BOmRzGhBtqgR2z"}
    

    如您所见,有效载荷中需要FIWARE Lab凭据,其形式为基于密码的授权类型。

    一旦获得了访问 token (在上面的示例中为qjHPUcnW6leYAqr3Xw34DWLQlja0Ix),只需将其添加到您过去执行的相同WebHDFS请求中即可。通过使用X-Auth-Token header 添加 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":[...]}}
    

    如果您尝试使用随机 token 尝试上述请求,则服务器将返回无效的 token ;那是因为您没有正确验证身份:
    $ 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.orgcomputing.cosmos.lab.fiware.org。关于Cosmos的身份验证服务器,它当前在computing.cosmos.lab.fiware.org,端口TCP/13000中运行。

    关于fiware - OAuth2在FIWARE Lab中访问Cosmos的WebHDFS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31187977/

    10-10 02:46