|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2022年7月25日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
既に記載してきたように、httpプロトコルは、文字列などで情報を送ります。このため、データの中身を盗み見る事が可能です。そこで、スマートシティなどでは暗号化の仕組みを取り入れる必要があり、"https"という方式の採用が必要です。 httpsはhttp Secureの事ですが、http over SSL/TLSまたはhttp over TLSとも言います。通信経路の暗号化の方式にSSLと言うものがあります。この方式は進化し、バージョン3の次のバージョンでは名前が変わりTLSとなりました。つまり、SSLもTLSも同じもので、バージョンが違うだけです。SSLと呼ばれた古いバージョンは今となってはセキュリティーが弱く、廃止された規格です。NGSI-LDでは、TLSの1.2を指定しています。 httpsとは、このTLSによりセキュアな暗号化された通信経路を作ってから、その中をhttpプロトコルで通信する方式の事です。つまり、httpの中身については、httpsもhttpも変わりはありません。 (愚痴)本ホームページはhttp httpsにすべきと記載しながら、本ホームページはhttpです。これは、Biglobeの個人ホームページサービスがhttpsをサポートしていないためです。今更、他のプロバイダに移行するのも面倒ですし。。。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2022年9月19日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WebAPiは、ターゲットに対してhttp動詞を実行する形をとると書きましたが、このターゲットをNGS v2の規格上はリソースURIと呼びます。リソースURIは以下の構造を持ちます。 <apiRoot>/v2/<それ以下の構造> apiRootは、実装により変わります。例えば本サイトの「Fiwareを使って都市OSを動かしてみよう」では、何も説明していませんがapiRootは"http://localhost:1026"でした。 NGSI v2の"v2/<それ以下の構造>"は以下の通りとなっています。
2022年7月25日 NGSO v2と同様に「ターゲット」をNGSI-LDの規格上はリソースURIと呼びます。リソースURIは以下の構造を持ちます。 <apiRoot>/ngsi-ld/v1/<それ以下の構造> apiRootは、実装により変わります。例えば本サイトの「Fiwareを使って都市OSを動かしてみよう」では、何も説明していませんがapiRootは"http://localhost:1026"でした。 NGSI-LDの<それ以下の構造>は以下の通りとなっています。
各エンドポイントに対するオペレーションは以下の通りです。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2022-09-19/2023-02-10 URLにパラメータ文字列を追加してパラメータを指定する事も可能です。例えば、"http://aaa.bbb/ccc?ddd=eee&fff=ggg"と書けば、ddd=eeeとfff=gggの二つのパラメータを指定したことになります。尚、curlコマンドの様に、オプションをurl中に書かず、他の方法で指定する機能をもっているツールもあります。
これらの説明からわかる様に、パラメータ内にAttribute名、Metadata名、Entity id、Entity typeなどの識別子が記載されます。パラメータ内に"="や"&"などの文字が出現すると、セキュリティー上の問題が発生し得ます。そこで、識別子に使って良い文字から、これらの文字を除外する事がのそましいです。この点については、識別子の定義の項で詳しく記載します。
2022年9月20日 前節で説明している様に、オプションはURLの文字列の最後に"http://aaa.bbb/ccc?ddd=eee&fff=ggg"などと書きますが、オプションもURLの一部なので使う事ができない文字があります。例えばダブルクォート(")や日本語などです。それらの文字を書くときには、URLエンコードと呼ばれる回避策があります。URLエンコードでは、1バイトずつ分解して"%"と2ケタの16進表現の3文字の文字列にします。例えば空白の場合は空白をタイプする代わりに"%20"と書きます。以下、変換表です
アンド、括弧、括弧閉じ、セミコロン、イコール、クエスチョンマークは、URLの仕様上は禁止されていませんが、セキュリティーやパラメータの解釈上問題があるので、どうしても使わざるを得ない場合はURLエンコーディングします。勿論、パラメータの"q=abc==def"のイコールは、イコールという記号として認識して欲しいので、URLエンコードしてはいけません。念のため。 パーセントはURLエンコードの印ですから、%という文字を送りたい場合は、URLエンコードします。 尚、curlなどの各種コマンド自身も特殊文字に特別な意味を持たせている場合があります。従って、特殊文字は常にURLエンコーディングしておいた方が良いかもしれません。また、それらのツールが"%"に特別な意味を持たせている場合があります。よくあるのが、URLエンコーディングのマークです。そうなると、空白を表現しようとすると、%20を更にURLエンコーディングする事になるので、%2520と書く事になります。そうなると訳が分かりませんので、多くの場合、その様な文字列はファイル内に記述すると避けられます。勿論、そのコマンドがファイルによる入力を許している場合だけですが。 日本語(正確にはASCII文字以外)については、必ずURLエンコードします。これは、URLはプロトコル上ASCII文字しかないとして処理するため、エラーを発生させたり、間違った結果となる場合があるからです。対応表は膨大になるのでここには掲載しませんが、色なツールやプログラムから呼び出せるクラスが流通していますので、必要に応じて検索エンジンなどで確認してください。 |