REST APIやWebDAVの認証方法
認証について
基本的に、OAUTH2によるシングルサインオンによってクレデンシャルを確保するが、互換性、あるいはアプリケーションの対応の容易性の為に、一部のAPIはBASIC認証を利用することが出来る。
認証必須領域とリソースの関係
REST API | api.teracloud.jp <node>.teracloud.jp | OAUTH2により発行されるクレデンシャルに加え、アプリケーション毎に異なるAPI-KEYが必須(下記を参照) |
---|---|---|
api.teracloud.jpの、/ba/user/ | BASIC認証(※)に加え、API-KEYが必須。 | |
WebDAVアクセス | /dav/及び、 /backup/の認証 | BASIC認証(※)。 2021年6月2日 16時25分頃までに登録済みのユーザはMyPageで無効化しない限りは/dav/へのBASIC認証を用いたアクセスができる。2021年6月2日 16時25分頃以降に新規登録したユーザはMyPageで有効化しない限りは/dav/へのBASIC認証を用いたアクセスはできない。 |
WebDAVアクセス | /v2/dav/の認証 | OAUTH2により発行されるクレデンシャル |
認証必須領域のURLについて
WebDAV領域では、各ノードサーバの下記のパス以下が、BASIC認証必須領域となる。
- https://{ノード名}.teracloud.jp/dav/……
- https://{ノード名}.teracloud.jp/backup/……
REST APIは、一部を除き、原則として認証が必須となる。
- https://api.teracloud.jp/{メジャーバージョン}/api/{リソース}/……
- https://{ノード名}.teracloud.jp/{メジャーバージョン}/api/{リソース}/……
認証方式
OAUTH2による認証
別途公開予定
※BASIC認証
- プロトコル
- すべてのアクセスはSSL(TLS v1.2以降)が必須とするため、Digest型のBASIC認証をサポートしていない。
- BASIC認証
- HTTPのRequest Header、Authorization:を使う方式。preemptiveモードでもnonpreemptiveモードのどちらも対応可。
- ID
- IDはInfiniCLOUDにログインするときに使うものと共通。
- パスワード
- 2021年6月2日 16時25分頃までに登録済みのユーザはMyPageで外部アプリ接続の再発行、無効化を行わなければログインするときに利用するものと共通。2021年6月2日 16時25分頃以降に新規登録したユーザはBASIC認証はデフォルトでOFFになり、MyPageで外部アプリ接続を有効化する必要がある。その際、発行されるパスワードはシステムによりランダムで発行されたものとなる。
REST APIアクセスに必要なクレデンシャル
REST APIにアクセスするためには、2つのクレデンシャルを必要とする。この2つが適合して正しいとき、初めてAPIが利用可能となる。
- ユーザのID、アプリパスワード
- ユーザを決めるもの。BASIC認証などで利用する。通常のWebDAVでの認証と同じ形式。
- API KEY
- アプリケーション毎に決められたユニークなキー。ラベリングのために利用する。
API KEYの取得
API KEYは申請が必要で、アプリケーションデベロッパーは、対応アプリ登録申請フォームから申し込みができる。
若干の審査が行われるが、法人、個人、オープンソースなど、どのような開発者でも構わない。
技術的に言えば、API KEYはアプリケーション側に埋める必要があるため、実際に保護対象にすることはできない。オープンソースなどであれば、githubなどにコミットされることもあると考えられるものなので、このAPI KEYはあくまで、紳士協定的に、アプリケーションを、名乗るための仕組みと考えて良い。
将来、アプリケーションデベロッパーからの申し出に基づき、API KEYを無効化したり、ユーザが個々で固有のAPI KEYの無効化機能の実装が予定されている。
API KEYの与え方
API KEYは、次のどちらかの方法で送信する必要がある。
- HTTP Request Headerで送る方式
- HTTPのRequest Headerで送る方式。
Request Headerに、X-TeraCLOUD-API-KEY:を添えて送る。全てのREST APIで利用することができる。 - MatrixParamで送る方式
- URL上のMatrix Parameterで送る方法。
URLの必要な箇所に、api_key=を添えて送る。全てのREST APIで利用することができる。
InfiniCLOUDのREST InterfaceはあくまでもHTTPSでの通信となるため、特殊なREST Clientスタックを必要としない。しかし、利用する言語、ライブラリ・スタック、アプリケーションプログラマの開発手法によって、容易なアクセス方法は異なると考えられる為、現時点では上記2つの方法でのアクセスを選ぶことができる。
その他の情報
- API KEYのフォーマット
- 128ビットを16進数、大文字のBINHEXで送信する。
- 有効期間
- そのリクエストのみ。