5

最近、FIWARE Lab で Cosmos の WebHDFS へのアクセスが OAuth2 で保護されているのを見てきました。WebHDFS を引き続き使用するには、OAuth2 トークンをリクエストに追加する必要があることはわかっていますが、

  • どうすればトークンを取得できますか?
  • トークンはどのようにリクエストに追加されますか?

トークンがない場合、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
4

2 に答える 2

3

はい、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.orgcomputing.cosmos.lab.fiware.orgています。Cosmosの認証サーバーですが、現在computing.cosmos.lab.fiware.org、ポートTCP/13000で稼働しています。

于 2015-07-02T15:21:08.257 に答える
1

適切なリクエストは次のとおりです。

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 は、証明書の検証をオフにするためのものです

于 2015-07-14T09:16:45.013 に答える