はい、WebHDFS アクセスは OAuth2 で保護されるようになりました。これは、認証と認可を実行する FIWARE で REST API を保護するための一般的なメカニズムの一部です。詳細については、こちらをご覧ください。
まず、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.org
れcomputing.cosmos.lab.fiware.org
ています。Cosmosの認証サーバーですが、現在computing.cosmos.lab.fiware.org
、ポートTCP/13000で稼働しています。