[Qgis-developer] Authentification use from Python
Bernhard Ströbl
bernhard.stroebl at jena.de
Tue Jan 12 23:44:45 PST 2016
Hi Larry,
thanks for pointing these things out, however I am not sure how to continue.
My situation is as follows: I have some 100 users that connect to our
central PostgreSQL DB. Most of them have a personal DB account granting
them write access to certain tables. Keeping their password in a secure
place is essential and I thus adviced them to not store it with QGIS nor
to share projects that contain layers loaded with their personal
account. The Authentication system seems to solve both problems.
However I have about 30 plugins for inhouse use that ease data access.
Some of these plugins directly query the database for reporting.
Furthermore I provide the plugin DataDrivenInputMask, that directly
queries the DB, too. I use QtSql for that.
Security reasons in respect to PostgreSQL connections: Any Python plugin
can currently access stored credentials either in QtSettings or in any
loaded PostGIS layer, so accessing them through the authentication
system is neither better nor worse from a user's perspective (IMHO)
compared to the current (10+ years old) situation. Not providing access
will increaese security, of course. So until the mentioned api is in
place I would opt for only deprecating the direct access, maybe have the
user allow access for the plugin (only once and store his answer in the
auth-DB).
If direct access to PostgreSQL credentials cannot be granted it would be
good if the future api could return a QtSqlDatabase object (which, of
course, contains the credentials accessible through
QtSqlDatabase.userName() and QtSqlDatabase.password() methods).
best regards
Bernhard
Am 12.01.2016 um 23:36 schrieb Larry Shaffer:
> Hi Bernhard,
>
> Please note that the Python support for direct access to the credentials
> via the auth method config *may* be completely removed for security
> reasons.
>
> Ideally, the expansion of credentials within a given auth method config
> would only be done within the core application and connection methods
> (HTTP, etc.) would be offered through a Python API. In this way an
> authcfg token can be passed in and the connection established without
> access to credentials.
>
> However, such support and an API are not currently available. It is
> simple enough to add to QgsNetworkAccessManager for HTTP[S] connections,
> but not so simple for other types of connections, e.g. database via a
> library or client. Once completed this means a plugin would not be able
> to access the credentials and pass them on to a different connection
> method, e.g. Python HTTP lib, etc.
>
> Once such an API is available (or even now, with some work), plugins
> could be 'authorized' by the user for access to credentials using
> revocable access tokens or signed/revokable certificates.
>
> Until then, the continued Python access to the auth system credentials
> means security is not good for the user. It should be considered for
> deprecation or just complete removal in 2.14 release.
>
> Regards,
>
> Larry Shaffer
> Dakota Cartography
> Black Hills, South Dakota
>
> QGIS Support/Development | Boundless
> lshaffer at boundlessgeo.com <mailto:lshaffer at boundlessgeo.com>
>
> On Tue, Jan 12, 2016 at 8:14 AM, Bernhard Ströbl
> <bernhard.stroebl at jena.de <mailto:bernhard.stroebl at jena.de>> wrote:
>
> Hi Luigi,
>
> many thanks! That was the key.
>
> I now have
> <code>
> am = QgsAuthManager.instance()
> myAuthMethodConfig = QgsAuthMethodConfig()
> am.loadAuthenticationConfig(mykey,myAuthMethodConfig,True)
> myAuthMethodConfig.configMap()
> </code>
>
> Bernhard
>
>
> Am 12.01.2016 um 15:58 schrieb Luigi Pirelli:
>
> Hi Bernhard
>
> be inspired by Boundless qgis-geoserver-plugin
>
> https://github.com/boundlessgeo/qgis-geoserver-plugin/blob/master/src/geoserverexplorer/gui/gsexploreritems.py#L502
>
> I hope it's enough
>
> cheers
> Luigi Pirelli
>
> **************************************************************************************************
> * Boundless QGIS Support/Development: lpirelli AT boundlessgeo
> DOT com
> * LinkedIn: https://www.linkedin.com/in/luigipirelli
> * Stackexchange:
> http://gis.stackexchange.com/users/19667/luigi-pirelli
> * GitHub: https://github.com/luipir
> * Mastering QGIS:
> https://www.packtpub.com/application-development/mastering-qgis
> **************************************************************************************************
>
>
> On 12 January 2016 at 12:47, Bernhard Ströbl
> <bernhard.stroebl at jena.de <mailto:bernhard.stroebl at jena.de>> wrote:
>
> Hi all,
>
> my goal is that my users do not save their PostgreSQL
> passwords in clear
> text but that they use the new Authentification system to do
> so. For my
> plugins I would need access to the PostgreSQL username and
> password, though.
> Is this generally possible in spite of security
> considerations as mentioned
> in the QGEP? If yes, how would I do it?
>
> what I have so far is:
> <code>
> am = QgsAuthManager.instance()
> myAuthMethodConfig = am.availableAuthMethodConfigs()[mykey]
> myAuthMethodConfig.configMap() # returns an empty dict :-(
> </code>
>
> QGIS 2.12.2
>
> any help appreciated
>
> regards
>
> Bernhard
>
> [1]
> https://github.com/dakcarto/QGIS-Enhancement-Proposals/blob/auth-system/qep-14-authentication-system.rst
>
>
> __________ Information from ESET Mail Security, version of
> virus signature
> database 12855 (20160112) __________
>
> The message was checked by ESET Mail Security.
> http://www.eset.com
>
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> <mailto:Qgis-developer at lists.osgeo.org>
> List info:
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe:
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>
>
> __________ Information from ESET Mail Security, version of virus
> signature database 12856 (20160112) __________
>
> The message was checked by ESET Mail Security.
> http://www.eset.com
>
>
>
>
__________ Information from ESET Mail Security, version of virus signature database 12860 (20160113) __________
The message was checked by ESET Mail Security.
http://www.eset.com
More information about the Qgis-developer
mailing list