認証
Clanforge では、Basic HTTP 認証および AWS 認証がサポートされます。どちらの認証方法も、アカウントの認証情報を利用します。認証情報にはアクセスキーと秘密鍵が含まれます。Clanforge の認証キーのページ にアクセスして認証情報を管理します。
Basic 認証
Clanforge API では Basic HTTP 認証がサポートされます。HTTP リクエストの Authorization ヘッダーを介して Clanforge 認証キー (アクセスキーと秘密鍵) の base64 エンコード文字列を渡すことで、Clanforge に対して認証できます。
ノート: 必ずコンテンツに application/x-www-form-urlencoded
へのリクエストを設定しください。
Authorization: Basic {base64_encode(AccessKey:SecretKey)}
Clanforge API では、HTTPS を介した Basic HTTP 認証と AWS 署名バージョン 4 を使用した認証がサポートされます。保護されていない HTTP 接続を介して送信したすべてのリクエストは HTTPS にリダイレクトされます。
AWS 署名バージョン 4 認証
廃止: AWS4 認証を廃止する予定はありませんが、実装が複雑なため推奨しません。
Clanforge では、認証情報を組み込むために HTTP Authorization ヘッダーを介して AWS 署名バージョン 4 がサポートされます。以下のコードブロックは、AWS 署名バージョン 4 で認証するリクエストの Authorization ヘッダー値の例です。
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/eu-west-1/cf/aws4_request,SignedHeaders=host;range;x-amz-date,Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
**ノート: **最初の 2 つのコンポーネント (AWS4-HMAC-SHA256 と Credential) の間にはスペースを入れます。その後のコンポーネント (Credential、SignedHeaders、Signature) はカンマで区切り、スペースを入れません。
以下の表で、Authorization ヘッダー値のさまざまなコンポーネントについて説明します。
コンポーネント | 説明 |
---|---|
AWS4-HMAC-SHA256 | AWS4-HMAC-SHA256 は、署名の計算に使用されたアルゴリズムです。認証に AWS 署名バージョン 4 を使用するときはこの値を組み込む必要があります。この文字列によって AWS 署名バージョン 4 (AWS4) と署名アルゴリズム (HMAC-SHA256) が指定されます。 |
Credential | Credential コンポーネントには、アクセスキーとスコープ情報 (日付、地域、署名の計算に使用されたサービス) が保持されます。この文字列の形式は <AccessKey>/<date>/<region>/<service>/aws4_request です。 |
SignedHeaders | SignedHeaders コンポーネントは、署名の計算に使用したリクエストヘッダーをセミコロンで区切ったリストです。このリストにはヘッダー名のみが保持されます。ヘッダー名は小文字で指定する必要があります。例えば、host;range;x-amz-date は有効ですが、host;Range;X-AMZ-DATE は有効ではありません。 |
Signature | Signature は 256 ビットの署名で、64 個の小文字の 16 進数として表されます。 |
署名の計算
署名を計算するには、まず署名用の文字列が必要です。署名用の文字列を用意したら、署名キーを使用してその文字列の HMAC-SHA256 ハッシュを計算します。
Clanforge は、認証済みリクエストを受け取ると、署名を計算し、それをリクエストに指定された署名と比較します。Clanforge によって使用されるのと同じ方法を使用して署名を計算する必要があります。署名のために合意された形式にリクエストをまとめるプロセスは、正規化と呼ばれます。
CanonicalRequest
コンポーネント | データ | ノート |
---|---|---|
HTTP Verb + “\n” + | "GET" または "PUT" または "POST" または "OPTIONS" … | |
CanonicalURI + “\n” + | UriEncode() | CanonicalURI は、URI の絶対パスコンポーネントの URI エンコードバージョンです。“/” から始まり、その後のドメイン名から最後の文字列まで、またはクエリ文字列パラメーターを含む場合は疑問符 (‘?’) までです。例えば、URI http://s3.amazonaws.com/examplebucket/myphoto.jpg で /examplebucket/myphoto.jpg は絶対パスです。 |
CanonicalQueryString + “\n” + | UriEncode() + “=” + UriEncode() + “&” +UriEncode() + “=” + UriEncode() + “&” +…UriEncode() + “=” + UriEncode() | QueryParam のアルファベット順にソートされます。 |
CanonicalHeaders + “\n” + | Lowercase() + “:” + Trim() + “\n” +Lowercase() + “:” + Trim() + “\n” +…Lowercase() + “:” + Trim() + “\n” | HeaderName のアルファベット順にソートされます。HTTP Host Header または Content-Type Header (Date Header にある場合) を保持する必要があります。 |
SignedHeaders + “\n” + | Lowercase() + “;” +Lowercase() + “;” +…Lowercase() | HeaderName のアルファベット順にソートされます。 |
HashedPayload | Hex(SHA256Hash()) | 16 進数値は、リクエストペイロードの SHA256 ハッシュです。GET リクエストなど、ペイロードがない場合は、空の文字列のハッシュ (例えば Hex(SHA256Hash(“”)) を使用する必要があります。 |
StringToSign
コンポーネント | データ | 例 |
---|---|---|
“AWS4-HMAC-SHA256” + “\n” + | 承認タイプ | |
TimeStamp + “\n” + | ISO8601 標準形式 | “201407240525T000000Z” |
Scope + “\n” + | <yyyymmdd> /<region> /<service> /aws4_request | “20140724/eu-west-1/cf/aws4_request” |
Hex(SHA256Hash(<CanonicalRequest> )) |
SigningKey
コンポーネント | 説明 |
---|---|
DateKey | HMAC-SHA256(“AWS4” + <SecretAccessKey> , “<yyyymmdd> ”) |
DateRegionKey | HMAC-SHA256(<DateKey> , <region> ) |
DateRegionServiceKey | HMAC-SHA256(<DateRegionKey> , <service> ) |
SigningKey | HMAC-SHA256(<DateRegionServiceKey> , “aws4_request”) |
関数の定義
コンポーネント | 説明 |
---|---|
Lowercase() | 文字列を小文字に変換します。 |
Hex(<string> ) | 小文字の base 16 エンコーディング。 |
Trim(<string> ) | 先頭または末尾のスペースを削除します。 |
UriEncode(<string> ) | URI によってすべてのバイトがエンコードされます。 |
HMAC-SHA256(<key> , <data> ) | Secure Hash Algorithm (SHA) のキー付きハッシュメッセージ認証コード (HMAC)。<data> と <key> の HMAC-SHA-256 ダイジェスト、およびバイナリ文字列としてエンコードされた結果。 |
定数と変数
変数 | 有効な値 | 説明 |
---|---|---|
<region> | eu-west-1 | リクエストにサービスを提供するサービス地域は、常に eu-west-1 です。 |
<service> | cf | リクエストのターゲットのサービス。Clanforge/Multiplay の場合、サービスを cf にする必要があります。 |
“\n” | 0x0a | 0x0a は ASCII 改行文字です。 |
<AccessKey> | アカウントにリンクされているアクセスキー。16 進数値です。 | |
<SecretKey> | 指定したアクセスキーに関連付けられている秘密鍵。16 進数値です。 | |
Host | Clanforge API サービスアドレス。Postman でテストしているとき、場合によっては Host 変数を手動で更新する必要があります。 |