Skip to main content

A library to separate configuration and authentication from program logic

Project description

orthauth

PyPI version Build Status Coverage Status

A library to separate configuration and authentication from program logic

THIS IS NOT ENCRYPTED

THIS IS NOT A PASSWORD MANAGER

THIS IS NOT A SECURE SECRET STORAGE SYSTEM

YOU CAN SHOOT YOURSELF IN THE FOOT WITH THIS

There is NO encryption for secrets stored using orthauth. Orthauth can source credientials from a variety of sources but it is INTENTIONALLY INSECURE.

If you do not understand the use case for this as well as the risks if used outside a secure environment then DO NOT USE IT. No one can help you if you get pwnd.

Use case

The primary use case for orthauth is to keep api keys from leaking into source code and winding up in public repositories. orthauth does not provide operational security for any auth store that it uses. It is up to the user to secure those and the systems they reside on as they see fit.

While orthauth attemts to prevent secrets from leaking via debug messages or logging, it doesn't know anything about the secretness of the values it returns, and once it has returned that value, it is up to the consuming code to prevent the contents of the value from leaking.

orthauth is indented to unify two common ways managing configuration variables and credentials: setting them environment variables, and including them in a plain text file with permissions set to 0600 (and preferably kept in a folder set to 0700).

For example running a program in the following way export API_KEY=lolplzdonotstealthis; ./my-script-that-needs-the-key or using a file like ~/.pgpass or emacs .authinfo. Note that pgpass probably shouldn't be a source for most python implementations because libraries like psycopg2 are able to read it directly. However in other languages that do not have a library that supports reading from pgpass directly, then pgpass would be a useful source.

By making it possible to provide credentials seemlessley in multiple ways the hope is to reduce the use of different solutions in different environments without incuring the massive complexity of maintaining a managed authentication infrasturcture.

Approach

  1. Decorators
  2. A layer of indirection between names in a code base and config/secrets structure.
  3. Be clear about what should be considered public information. Thus prevent anything stored as a secret from being used as a key to find another secret.
  4. Bare minimum to store static configuration information, anything more should be implemented in the language consuming the config, not in the config.

Currently supported config formats

  • yaml
  • json
  • python dictionary literals

Usage

import orthauth as oa
auth = oa.AuthConfig('path/to/config.yaml')

@auth.tangential_init('api_key', 'some-service-api-key')
class ThatNeedsAuth:
    """ needs authenticated connection to some-service """

tna = ThatNeedsAuth()
print(tna.api_key)

Haven't been scared off yet? See the developer guide for more examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orthauth-0.0.9.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orthauth-0.0.9-py2.py3-none-any.whl (15.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file orthauth-0.0.9.tar.gz.

File metadata

  • Download URL: orthauth-0.0.9.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.6

File hashes

Hashes for orthauth-0.0.9.tar.gz
Algorithm Hash digest
SHA256 5281a99902bfb8e05aa9f1a0f26778a67163fe88bf5425e5a3d9676a65c83cab
MD5 a8f507dd7fd0dab430f104797933bf7f
BLAKE2b-256 9998731768e1b99988a211e05bfd81fc7cd82fd719a13fa4743eb54368287f65

See more details on using hashes here.

File details

Details for the file orthauth-0.0.9-py2.py3-none-any.whl.

File metadata

  • Download URL: orthauth-0.0.9-py2.py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.6

File hashes

Hashes for orthauth-0.0.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d1fe9fa470596a78b16a60b76141942fb0a238c456661d66b13c2ca5fef7c0f7
MD5 637a4de393e081acadecaa07e2500687
BLAKE2b-256 a92e7ba1b2593934d21fd1816cf990b75458eb81b1387fccf78d4422bc5fb21a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page