24.2. 用户身份验证工作流

图 24.19 通用用户工作流
24.2.1. HTTP(S)身份验证
最常见的资源连接之一是通过HTTp(S),例如Web地图服务器,身份验证方法插件通常适用于这些类型的连接。方法插件可以访问HTTP请求对象,并且可以操作请求及其标头。这允许多种形式的基于互联网的身份验证。通过HTTPS(S)进行连接时,如果使用标准的用户名/密码认证方式,则会在连接时尝试使用HTTPS基本认证。

图 24.20 为HTTP Basic配置WMS连接
24.2.2. 数据库身份验证
到数据库资源的连接通常存储为 key=value
对,它将公开用户名和(可选)密码,如果 not 使用身份验证配置。使用身份验证系统进行配置时, key=value
将是凭据的抽象表示,例如 authfg=81t21b9
。

图 24.21 配置带PKI的Postgres SSL连接
24.2.3. PKI身份验证
在身份验证系统中配置PKI组件时,您可以选择将组件导入数据库或引用存储在文件系统中的组件文件。如果这些组件经常更改,或者组件将由系统管理员更换,则后者可能很有用。在这两种情况下,您都需要存储访问数据库中的私钥所需的任何密码。

图 24.22 PKI配置工作流
所有PKI组件都可以在 Certificate Manager ,可以在 Authentication QGIS中的选项卡 Options 对话框 ( ),请点击 Manage Certificates 纽扣。

图 24.23 打开证书管理器
在 Certificate Manager ,有适用于 Identities , Servers 和 Authorities 。每个选项卡都包含在各自的选项卡中,并按照它们在上面的工作流程图中遇到的顺序在下面进行描述。一旦您习惯了工作流,Tab键顺序是相对于经常访问的编辑器的。
备注
由于所有身份验证系统都会立即编辑对身份验证数据库的写入,因此无需单击 Options 对话框 OK 按钮,以保存任何更改。这与选项对话框中的其他设置不同。
24.2.3.2. 身份
您可以从管理可用的客户端身份包 Identities 选项卡中的 Certificate manager 从 Authentication QGIS的选项卡 Options 对话框中。身份是根据启用了PKI的服务对您进行身份验证的工具,通常由客户端证书和私钥组成,它们可以作为单独的文件,也可以合并到单个“捆绑”文件中。捆绑包或私钥通常受密码短语保护。
导入任何证书颁发机构(CA)后,您可以选择将任何身份捆绑包导入身份验证数据库。如果您不希望存储身份,则可以在单个身份验证配置中引用其组件文件系统路径。

图 24.29 身份编辑器
导入身份包时,它可以受密码保护或不受保护,并且可以包含形成信任链的CA证书。信任链证书不会在此导入;它们可以单独添加到 Authorities 标签。
在导入时,捆绑包的证书和私钥将存储在数据库中,密钥的存储使用QGIS主密码进行加密。随后使用数据库中存储的捆绑包将只需要输入主密码。
支持由PEM/DER(.pem/.der)和PKCS#12(.p12/.pfx)组件组成的个人身份包。如果密钥或捆绑包受密码保护,则需要密码才能在导入前验证组件。同样,如果捆绑包中的客户端证书无效(例如,其生效日期尚未开始或已过),则无法导入捆绑包。

图 24.30 PEM/DER身份导入

图 24.31 PKCS#12身份导入
24.2.4. 处理坏层
有时,与项目文件一起保存的身份验证配置ID不再有效,这可能是因为当前身份验证数据库与上次保存项目时不同,或者由于凭据不匹配。在这种情况下, Handle bad layers 对话框将在QGIS启动时显示。

图 24.32 使用身份验证处理错误的层
如果发现数据源具有与其关联的身份验证配置ID,则您将能够对其进行编辑。这样做将自动编辑数据源字符串,其方式与在文本编辑器中打开项目文件并编辑字符串的方式大致相同。

图 24.33 编辑错误层的身份验证配置ID
24.2.5. 更改身份验证配置ID
有时,您需要更改与访问资源关联的身份验证配置ID。在某些情况下,这一点很有用:
Resource auth config ID is no longer valid :当您已切换身份验证数据库添加需要时,可能会发生这种情况 align 已与资源关联的ID的新配置。
Shared project files :如果您打算在用户之间共享项目,例如通过共享文件服务器,您可以 predefine 7个字符(包含 a-z 和/或 0-9 ),它与资源关联。然后,各个用户更改特定于其资源凭据的身份验证配置的ID。当项目打开时,该ID在身份验证数据库中找到,但凭据因用户而异。

图 24.34 更改层的身份验证配置ID(已解锁的黄色文本字段)
警告
更改身份验证配置ID被视为高级操作,只有在充分了解其必要性的情况下才能执行此操作。这就是为什么在编辑ID之前需要单击一个锁定按钮来解锁ID的文本字段。
24.2.6. QGIS服务器支持
使用具有身份验证配置的图层的项目文件作为QGIS服务器中地图的基础时,QGIS需要执行几个附加设置步骤才能加载资源:
身份验证数据库需要可用
身份验证数据库的主密码需要可用
实例化身份验证系统时,服务器将创建或使用 qgis-auth.db
处于活动状态的文件 user profile ,或由 QGIS_AUTH_DB_DIR_PATH
环境变量。可能是服务器的用户没有主目录,在这种情况下,请使用环境变量来定义服务器的用户具有读/写权限且不在Web可访问目录中的目录。
要将主密码传递给服务器,请将其写入文件系统上服务器进程用户可读的路径下的第一行文件,并使用 QGIS_AUTH_PASSWORD_FILE
环境变量。确保将文件限制为服务器的进程用户只读,并且不将文件存储在可通过Web访问的目录中。
备注
QGIS_AUTH_PASSWORD_FILE
变量将在访问后立即从服务器环境中删除。
24.2.7. SSL服务器例外

图 24.35 SSL服务器异常
您可以从管理SSL服务器配置和例外 Servers 选项卡中的 Authentication 优质地理信息系统部分 Options 对话框中。
有时,当连接到一台SSL服务器时,SSL“握手”或服务器的证书会出现错误。您可以忽略这些错误或创建一个SSL服务器配置作为例外。这类似于Web浏览器允许您覆盖SSL错误,但具有更精细的控制。
警告
除非您完全了解服务器和客户端之间的整个SSL设置,否则不应创建SSL服务器配置。相反,应向服务器管理员报告该问题。
备注
某些PKI设置使用与用于验证SSL服务器证书的链完全不同的CA信任链来验证客户端身份。在这种情况下,为连接服务器创建的任何配置不一定会修复您的客户端身份验证问题,只有您的客户端身份的颁发者或服务器管理员可以修复该问题。
您可以通过单击 纽扣。或者,也可以在连接过程中发生SSL错误时添加配置,并向您显示 SSL Error 对话框(在该对话框中可以暂时忽略错误,也可以将错误保存到数据库并忽略):

图 24.36 手动添加配置

图 24.37 在SSL错误期间添加配置
将SSL配置保存到数据库后,即可对其进行编辑或删除。

图 24.38 现有的SSL配置

图 24.39 编辑现有的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错误对话框,您可以在其中选择将配置保存到数据库。