24.2. ユーザー認証ワークフロー
24.2.1. HTTP(S)認証
最も一般的なリソース接続の1つは、HTTP(S)を介して例えばWebマッピングサーバーで、認証方式のプラグインは多くの場合に接続のこれらのタイプのために機能します。方法プラグインは、HTTPリクエスト・オブジェクトにアクセスし、要求、ならびにそのヘッダの両方を操作できます。これにより、インターネットベースの認証の多くの形態が可能になります。標準のユーザー名/パスワードを使用してHTTP(S)経由で接続するときは、認証方法は接続時にHTTP BASIC認証を試みます。
24.2.2. データベース認証
データベースリソースへの接続は一般的に key=value
のペアとして保存され、認証設定を使用 しない 場合は、ユーザー名と(オプションで)パスワードが暴露されます。認証システムを使うよう設定した場合、key=value
は認証情報の抽象化された表現になります(例 authfg=81t21b9
。
24.2.3. PKI認証
認証システム内のPKIコンポーネントを設定するときは、データベースにコンポーネントをインポートしたり、ファイルシステムに保存されているコンポーネントファイルを参照するオプションがあります。このような成分が頻繁に変更、又はここでコンポーネントは、システム管理者によって置換される場合、後者は有用であり得ます。いずれの場合では、データベース内の秘密鍵にアクセスするために必要なすべてのパスフレーズを保存する必要があります。
すべてのPKIコンポーネントは、証明書マネージャ 内の個別のエディタで管理することができます。このエディタは、QGISの オプション ダイアログ(認証 タブで 証明書を管理 ボタンをクリックしてアクセスすることができます。
)の証明書マネージャ には、Identities、サーバ、認証局 のエディタがあります。これらはそれぞれ独自のタブに含まれており、上記のワークフロー・チャートの中で遭遇する順番で以下に説明します。タブの順番は、ワークフローに慣れてきたら、頻繁にアクセスするエディタに相対するものです。
注釈
認証システムの編集はすべて認証データベースに即座に書き込まれるため、変更を保存するために オプション ダイアログの OK ボタンをクリックする必要がありません。これは、オプションダイアログの他の設定とは異なります。
24.2.3.2. アイデンティティ
証明書マネージャ 認証 QGIS オプション ダイアログのタブ アイデンティティ タブでから入手できるクライアントIDのバンドルを管理できます。アイデンティティは、別々のファイルとして、または単一「バンドル」のファイルに結合のいずれか、PKI対応サービスに対して、あなたを認証し、通常のクライアント証明書と秘密鍵で構成するものです。バンドルまたは秘密鍵は、多くの場合、パスフレーズで保護されています。
一度何らかの証明機関(CA)をインポートされると、必要に応じて認証データベースに任意のアイデンティティバンドルをインポートできます。アイデンティティを保存したくない場合は、個別の認証設定の中でそのコンポーネントファイルシステムパスを参照できます。
アイデンティティ・バンドルをインポートする場合、パスフレーズで保護または非保護することができ、かつ信頼チェーンを形成するCA証明書を含めることができます。トラストチェーンの認定は、ここではインポートされません。 機関 タブ下でそれらは別途追加できます。
インポート時には、バンドルの証明書と秘密鍵は、鍵の保管は、QGISのマスターパスワードを使用して暗号化し、データベースに保存されます。データベースから記憶された束のその後の使用は、マスターパスワードの入力を必要とします。
個人のアイデンティティは、PEM / DER(.PEM / .DER)とPKCS#12からなるバンドル(.P12 / .PFX)コンポーネントがサポートされています。キーまたはバンドルがパスフレーズで保護されている場合は、パスワードをインポートする前にコンポーネントを検証する必要があります。バンドル内のクライアント証明書が無効である場合同様に、バンドルをインポートすることはできません(例えば、その効果的な日付はまだ開始されていないか、経過しています)。
24.2.4. 不正レイヤの取り扱い
時折、プロジェクトファイルと一緒に保存された認証設定IDが、おそらく現在の認証データベースがプロジェクトが最後に保存されたときと異なったり資格情報の不一致のせいで、もはや有効ではありません。このような場合には 不正レイヤ処理 ダイアログがQGISの起動時に表示されます。
データソースは、それに関連付けられた認証設定のIDを持つことが判明した場合、それを編集できます。そうすることで、自動的にテキストエディタでプロジェクトファイルを開くと、文字列の編集と同じように多くのデータソース文字列を編集します。
24.2.5. 認証の設定のIDを変更する
リソースへのアクセスに関連する認証設定IDの変更が必要な場合があります。これが便利な場合があります:
リソースの認証設定IDが無効になっている: これは、認証データベースを切り替えたときに、新しい設定をリソースに関連付けられたIDに合わせる必要がある場合に発生することがあります。
共有プロジェクトファイル: 共有ファイルサーバーなどを介してユーザー間でプロジェクトを共有することを意図している場合、リソースに関連付けられた7文字(a-z や 0-9 を含む)を predefine が可能です。そして、個々のユーザーは、リソースの認証情報に特化した認証設定のIDを変更します。プロジェクトが開かれたとき、IDは認証データベースで見つかりますが、認証情報はユーザーごとに異なります。
警告
認証設定IDを変更することは高度な操作と考えられ、なぜそれが必要であるかの完全な知識を持ってのみ行われるべきです。IDを編集するのに先立ってIDのテキストフィールドのロックを解除するためにクリックされる必要のあるロックボタンがあるのはこのためです。
24.2.6. QGISサーバーのサポート
認証設定を持っているレイヤーがあるプロジェクトファイルをQGISサーバー中の地図の基礎として使用する場合は、QGISでそれらのリソースをロードするために必要な追加の設定手順がいくつかあります:
認証データベースが利用できるようにする必要があります
認証データベースのマスターパスワードが利用できるようにする必要があります
認証システムをインスタンス化する際、Serverはアクティブな user profile に qgis-auth.db
ファイルを作成または使用するか、QGIS_AUTH_DB_DIR_PATH
環境変数で定義したディレクトリを使用します。その場合、環境変数を使用して、サーバーのユーザーが読み取り/書き込み権限を持ち、ウェブアクセス可能なディレクトリ内にないディレクトリを定義してください。
サーバーにマスターパスワードを渡すには、サーバー・プロセスのユーザーが読み込み可能なファイルシステム上のパスにファイルの最初の行にそれを書くと QGIS_AUTH_PASSWORD_FILE
環境変数を使用して定義されました。サーバーのプロセスのユーザーによってのみ読めるようファイルを制限し、ウェブアクセス可能なディレクトリ内のファイルを保存しないように確認してください。
注釈
QGIS_AUTH_PASSWORD_FILE
変数は、アクセス後すぐにサーバー環境から削除されます。
24.2.7. SSLサーバーの例外
QGISの オプション ダイアログの 認証 セクション中の サーバー タブから、SSLサーバーの設定および例外を管理できます。
SSLサーバーへの接続時に時々、SSL「握手」や、サーバーの証明書でエラーがあります。これらのエラーを無視するか、例外としてSSLサーバー構成を作成できます。これは、Webブラウザを使用してSSLエラーをどのように上書きできるかに似ていますが、より細かく制御しています。
警告
サーバーとクライアントの間で全体のSSLの設定の完全な知識を持っていない限り、SSLのサーバー構成を作成しないでください。代わりに、サーバー管理者に問題を報告してください。
注釈
一部のPKIのセットアップは、SSLサーバー証明書を検証するために使用するチェーンよりも、クライアントのアイデンティティを検証するために完全に異なるCAの信頼チェーンを使用します。このような状況では、接続するサーバー用に作成された任意の構成は、必ずしもあなたのクライアントのアイデンティティの検証の問題を解決しないだろう、自分のクライアントIDの発行者またはサーバー管理者だけが問題を解決できます。
ボタンをクリックすることにより、SSLサーバーの設定を事前に設定できます。SSLエラーが接続時に発生しますが SSLエラー ダイアログが表示されたときに代わりに、設定を追加できます(ここではエラーは一時的に無視されるか、またはデータベースに保存されて無視できます):
SSLの設定がデータベースに保存されれば、編集したり削除できます。
SSL設定を事前に行いたい場合で、インポートダイアログがサーバーの接続に対応していない場合は、以下のコードを実行することで、Python Console 経由で手動で接続をトリガーできます(https://bugreports.qt-project.org をサーバーのURLに置き換えてください):
from qgis.PyQt.QtNetwork import QNetworkRequest
from qgis.PyQt.QtCore import QUrl
from qgis.core import QgsNetworkAccessManager
req = QNetworkRequest(QUrl('https://bugreports.qt-project.org'))
reply = QgsNetworkAccessManager.instance().get(req)
これにより、何かエラーが発生した場合はSSLエラーダイアログが開き、設定をデータベースに保存することを選択できます。