Skip to main content

No project description provided

Project description

Globus Identity Mapper

The Globus Identity Mapper Python library provides two mapping classes that implement configurable hooks for mapping a Globus Auth Identity resource to an application- or context-specific username:

  • ExpressionIdentityMapping
  • ExternalIdentityMapping

Additionally, the library offers a protocol for implementing custom identity mapper logic:

  • IdentityMappingProtocol

Most consumers of this library will make use of a mapping configuration document, the .from_mapping_document() method to instantiate the appropriate class, and then call .map_identity() or .map_identities() thereafter. This enables administrators to dynamically specify their desired mapping configuration without having to resort to typing Python code. For example, a simple mapping configuration to use the ExpressionIdentityMapping logic to follow the rules as documented at Globus Connect Server, Identity Mapping might be:

{
  "DATA_TYPE": "expression_identity_mapping#1.0.0",
  "mappings": [
    {
      "source": "{email}", "match": "(.*)@example\\.org", "output": "{0}"
    }
  ]
}

A hard-coded class instantiation might look like:

>>> import json
>>> from globus_identity_mapping import ExpressionIdentityMapping
>>> fdata = open("example_configuration.json").read()
>>> mapping_document = json.loads(fdata)
>>> connector_id = "..."  # see the Identity Mapping Guide, linked above
>>> storage_gateway = "application-specific-identifier"
>>> mapper = ExpressionIdentityMapping.from_mapping_document(
...   mapping_document, storage_gateway=storage_gateway, connector_id=connector_id
... )

Thereafter, the mapper may be used to find a context-aware username by mapping the source field of email from a Globus Auth Identity record via the regular expression logic. (In the above example, the hostname is stripped to determine the application-specific username.) Example:

>>> gair = {"id": "...", "sub": "...", "email": "billy@example.org", "name": "..."}
>>> mapper.map_identity(gair)
'billy'

For more serious library usage, implements may want to look at globus_identity_mapping.loader.load_mappers

Development

The high level bits:

  • uses Poetry (pyproject.toml)
  • uses tox
    • tox - enough to run all tests
    • tox -e mypy to run mypy
  • Reminder to install pre-commit at your first checkout: pre-commit --install

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

globus_identity_mapping-0.5.0.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

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

globus_identity_mapping-0.5.0-py3-none-any.whl (26.1 kB view details)

Uploaded Python 3

File details

Details for the file globus_identity_mapping-0.5.0.tar.gz.

File metadata

  • Download URL: globus_identity_mapping-0.5.0.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.7 Darwin/23.6.0

File hashes

Hashes for globus_identity_mapping-0.5.0.tar.gz
Algorithm Hash digest
SHA256 48a871f2ae72be8c02485cb3a1736418e05ae72d78587abda4603de8d330f488
MD5 840b1a7069ad2c88736b112924510faa
BLAKE2b-256 20ed8d14b86f2e37f87ee8c0e5cb1d99b2e746ca08933936710eb7f0abe2bad6

See more details on using hashes here.

File details

Details for the file globus_identity_mapping-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for globus_identity_mapping-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d92c4ff9c85a60093fcc41629f46cc1999cfaddcbce9e4fec12cae86d596d2c5
MD5 208be1d0955af66f5e8627c01c994a06
BLAKE2b-256 bf8b8dd1f4ee6cc1753f4d4af3e89d1f075e4fb73f07ce2cc1bad13bb5971625

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