{ "info": { "author": "Henning Jacobs", "author_email": "henning.jacobs@zalando.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython" ], "description": "==============\nAWS SAML Login\n==============\n\n.. image:: https://travis-ci.org/zalando/aws-saml-login.svg?branch=master\n :target: https://travis-ci.org/zalando/aws-saml-login\n :alt: Build Status\n\n.. image:: https://coveralls.io/repos/zalando/aws-saml-login/badge.svg\n :target: https://coveralls.io/r/zalando/aws-saml-login\n :alt: Code Coverage\n\n.. image:: https://img.shields.io/pypi/dw/aws-saml-login.svg\n :target: https://pypi.python.org/pypi/aws-saml-login/\n :alt: PyPI Downloads\n\n.. image:: https://img.shields.io/pypi/v/aws-saml-login.svg\n :target: https://pypi.python.org/pypi/aws-saml-login/\n :alt: Latest PyPI version\n\n.. image:: https://img.shields.io/pypi/l/aws-saml-login.svg\n :target: https://pypi.python.org/pypi/aws-saml-login/\n :alt: License\n\nThis Python package provides some helper functions to allow programmatic retrieval of temporary AWS credentials from STS_ (Security Token Service) when using federated login with `Shibboleth Identity Provider`_. Currently it supports only Shibboleth IDP.\n\nThe implementation relies on HTML parsing of the Shibboleth redirect page (HTML form) and the AWS role selection page.\n\nThis package requires Python 3.4.\n\nInstallation\n============\n\n.. code-block:: bash\n\n $ sudo pip3 install --upgrade aws-saml-login\n\nUsage\n=====\n\n.. code-block:: python\n\n from aws_saml_login import authenticate, assume_role, write_aws_credentials, get_boto3_session\n\n # authenticate against identity provider\n saml_xml, roles = authenticate('https://shibboleth-idp.example.org', user, password)\n\n print(roles)\n\n # just use the first role here, we might display a user dialog to choose one\n first_role = roles[0]\n\n provider_arn, role_arn, account_name = first_role\n\n # get temporary AWS credentials\n key_id, secret, session_token = assume_role(saml_xml, provider_arn, role_arn)\n\n # write to ~/.aws/credentials\n write_aws_credentials('default', key_id, secret, session_token)\n\n # get boto3 session\n session = get_boto3_session(key_id, secret, session_token)\n ec2 = session.resource('ec2', 'eu-west-1')\n iam = session.client('iam')\n\n # get boto3 session with default region eu-central-1\n session = get_boto3_session(key_id, secret, session_token, 'eu-central-1')\n ec2 = session.resource('ec2')\n\n # get session for the first 5 roles\n sessions = {}\n for role in roles[:5]:\n provider_arn, role_arn, account_name = role\n key_id, secret, session_token, expiration = assume_role(saml_xml, provider_arn, role_arn)\n sessions['{} {}'.format(account_name,role_arn.split(':')[-1])] = get_boto3_session(key_id, secret, session_token)\n\n for key in sessions.keys():\n print('Key: {} / AccountAlias: {}'\n .format(key,\n sessions[key].client('iam').list_account_aliases()['AccountAliases']))\n # AWS SDK (e.g. boto) can be used to call AWS endpoints\n\n.. _STS: http://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html\n.. _Shibboleth IDP: http://shibboleth.net/products/identity-provider.html\n\n\nshibboleth configuration\n========================\n\n.. code-block:: xml\n\n \n ...\n \n \n \n \n \n ...\n \n \n ...\n \n ...\n \n \n \n ...\n \n\n \n ...\n \n \n \n \n \n \n \n arn:aws:iam::$2:saml-provider/Shibboleth,arn:aws:iam::$2:role/Shibboleth-$1\n cn=([^,]*),ou=Roles,ou=[^,]*?([0-9]+),ou=AWS.*\n \n \n\n \n \n \n \n ...\n \n\n \n ...\n \n \n \n \n \n \n \n \n \n \n \n \n ...\n \n\nTo login, you must open the right providerId with the Unsolicited/SSO URL:\nhttps://myidp.example.org/profile/SAML2/Unsolicited/SSO?providerId=urn:amazon:webservices\n\n\nLicense\n=======\n\nCopyright \u00a9 2015 Zalando SE\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zalando/aws-saml-login", "keywords": "aws saml federated login shibboleth identity provider sts", "license": "Apache License 2.0", "maintainer": null, "maintainer_email": null, "name": "aws-saml-login", "package_url": "https://pypi.org/project/aws-saml-login/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/aws-saml-login/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/zalando/aws-saml-login" }, "release_url": "https://pypi.org/project/aws-saml-login/1.0.11/", "requires_dist": null, "requires_python": null, "summary": "SAML login for AWS using Shibboleth IDP", "version": "1.0.11" }, "last_serial": 2453458, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "26051e11d7f84d56cda5c4b6acfb286c", "sha256": "e279d2cc108d8404bbee2ff2319fe435a5eac7cf1830b513930f7562c77185e8" }, "downloads": -1, "filename": "aws-saml-login-0.1.tar.gz", "has_sig": false, "md5_digest": "26051e11d7f84d56cda5c4b6acfb286c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6957, "upload_time": "2015-03-19T16:09:52", "url": "https://files.pythonhosted.org/packages/4e/dc/275dde73cc3e7033022ac0f55b0655dbff30e020e3b0f08ec1d3c0d44ba4/aws-saml-login-0.1.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "f2cad25f866914b78fb72d0160d198fb", "sha256": "d11143c3f3649dd4317b22ac9a56f01f1831734e6fedc1c8bb9911173ce4ae3d" }, "downloads": -1, "filename": "aws-saml-login-0.11.tar.gz", "has_sig": false, "md5_digest": "f2cad25f866914b78fb72d0160d198fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6697, "upload_time": "2015-07-06T11:49:12", "url": "https://files.pythonhosted.org/packages/b1/bb/3b9c00e5ee46aa6bddd25841f8c2616df054c6fdffd782663f8b9caeb061/aws-saml-login-0.11.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "e93d9f323d9291f640957226eb57884a", "sha256": "ec470eba6486ce870a223eb7ad56c05b260f63af4d32c3440eea77acc9d61bbc" }, "downloads": -1, "filename": "aws-saml-login-0.2.tar.gz", "has_sig": false, "md5_digest": "e93d9f323d9291f640957226eb57884a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7069, "upload_time": "2015-03-19T16:10:23", "url": "https://files.pythonhosted.org/packages/c9/ac/564ebb5485c2c2f9db57a9403ad010abb9e96279ebed565e466d1aaac04f/aws-saml-login-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "8670e78b199ed94410b3ab6ba2c4701f", "sha256": "b7a8d77322d74a8b312ae06204c09317defd00d9fb4725b94c34972edbfd577d" }, "downloads": -1, "filename": "aws-saml-login-0.3.tar.gz", "has_sig": false, "md5_digest": "8670e78b199ed94410b3ab6ba2c4701f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5870, "upload_time": "2015-03-19T17:04:38", "url": "https://files.pythonhosted.org/packages/f1/8b/56b36d7851eb07158ed266af0315216de69bdae80c6ccf6e8fc8fd1d3d42/aws-saml-login-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "4996e82d7a82ab14697da90e31fa8ba1", "sha256": "ae138f8457c52b04e67c4ee1dd59716cfeccb883b5d17370c5853b94d9cc48d6" }, "downloads": -1, "filename": "aws-saml-login-0.4.tar.gz", "has_sig": false, "md5_digest": "4996e82d7a82ab14697da90e31fa8ba1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6465, "upload_time": "2015-03-23T14:14:30", "url": "https://files.pythonhosted.org/packages/fe/99/1a7a94f08551da8541d53168db642e88eab13793658ddab1f1d04c93656d/aws-saml-login-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "ddf63c52f058e7527a5677b06c06239e", "sha256": "b735f8027db752155d5c43b8aa2a3c9e60948982153a54abfc447c988e7ee596" }, "downloads": -1, "filename": "aws-saml-login-0.5.tar.gz", "has_sig": false, "md5_digest": "ddf63c52f058e7527a5677b06c06239e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6508, "upload_time": "2015-03-24T09:45:09", "url": "https://files.pythonhosted.org/packages/0b/8c/468e61c013947d100ce043bd4c8f979657e6cb4971d15e36dca7d55a57a1/aws-saml-login-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "e66d98c6a5c1a7f23579ab030074d6cd", "sha256": "4b72dfb60eba1d3efac6f701ec069289beb5c6cc6a03f0566d0ab627ecfe177c" }, "downloads": -1, "filename": "aws-saml-login-0.6.tar.gz", "has_sig": false, "md5_digest": "e66d98c6a5c1a7f23579ab030074d6cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6517, "upload_time": "2015-04-07T14:47:25", "url": "https://files.pythonhosted.org/packages/92/06/bad0343267de1c3b180cb29a1b0a12a195efecbb6dff1e734a52f158a061/aws-saml-login-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "5f2c50846409fef88fe9f84c0911d4d5", "sha256": "62a6d1d45c69287dd3d435bfa65f7bd31f287d39f81225ba0badfd634fb0d004" }, "downloads": -1, "filename": "aws-saml-login-0.7.tar.gz", "has_sig": false, "md5_digest": "5f2c50846409fef88fe9f84c0911d4d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6524, "upload_time": "2015-04-15T10:25:37", "url": "https://files.pythonhosted.org/packages/f1/73/88e4fcd0c74ba52f4bf4ea5462b4bec176229522bede5b1a48e83f909d83/aws-saml-login-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "f195c53e378f76bccca64cf3f1d4bfd5", "sha256": "0b79dd652d6cfb0f9f03932fe76c1cfefed44df9e5ba987df4ef09c658699ae8" }, "downloads": -1, "filename": "aws-saml-login-0.8.tar.gz", "has_sig": false, "md5_digest": "f195c53e378f76bccca64cf3f1d4bfd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6594, "upload_time": "2015-04-27T16:06:26", "url": "https://files.pythonhosted.org/packages/c2/23/e8d76feeae26d6cb2de2a2a1c8a510c921acf289feaf19daed2fcfc93d44/aws-saml-login-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "bd5cba6f96fe589528652211cdbf8046", "sha256": "81f8d2ce9f743561ba4f9adf12f57f6622f29a8b9bdf7f93c159951d44cf6005" }, "downloads": -1, "filename": "aws-saml-login-0.9.tar.gz", "has_sig": false, "md5_digest": "bd5cba6f96fe589528652211cdbf8046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6510, "upload_time": "2015-05-26T08:34:14", "url": "https://files.pythonhosted.org/packages/4c/0a/f6a55cc6bc74010af9487edf47f2fb81d457c7ca5a6b326cb15e63c2ea75/aws-saml-login-0.9.tar.gz" } ], "1.0.11": [ { "comment_text": "", "digests": { "md5": "6b1c7e5cd18cdf8aca6dbacabdf3447f", "sha256": "8d769c4ca274bbf9667aa12a683e1bb01bcaeb702edf2f1ecf24b9ce8c41fd29" }, "downloads": -1, "filename": "aws_saml_login-1.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "6b1c7e5cd18cdf8aca6dbacabdf3447f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 10420, "upload_time": "2016-11-10T17:13:48", "url": "https://files.pythonhosted.org/packages/47/f8/3e2da04caf68a5813cb3a16ca3a6be6f42b4cd850df089433c894fcc41c1/aws_saml_login-1.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ae887b616105346035848fe4dc0f57b", "sha256": "2cb5b50d3ac696a94dcc934abc5c3d81f7d9da44915250eea6aa57424dac9111" }, "downloads": -1, "filename": "aws-saml-login-1.0.11.tar.gz", "has_sig": false, "md5_digest": "7ae887b616105346035848fe4dc0f57b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8164, "upload_time": "2016-11-10T17:13:45", "url": "https://files.pythonhosted.org/packages/52/07/2cf0a7ff99986a1c0c887180360ffe97f65daf521439bf1697a9df760b10/aws-saml-login-1.0.11.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "eeeb00382de58cfe5c777c9dc9f03322", "sha256": "9f037f333c6248fc07424bf023280f74fdf4f50edd24f55859b96c163a44eb9d" }, "downloads": -1, "filename": "aws_saml_login-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "eeeb00382de58cfe5c777c9dc9f03322", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 8064, "upload_time": "2015-12-11T14:27:29", "url": "https://files.pythonhosted.org/packages/c1/d2/33a6dd98a63830f435f1b7c938034bb79bd44b97d7b9e4ffd3057f160cef/aws_saml_login-1.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae0c82bc32e3ae95ae2ffa75f45fe5f0", "sha256": "dd0d3971373b7b61e05a04be0a0e8a42f705695b535df839b6d5b697b94aa080" }, "downloads": -1, "filename": "aws-saml-login-1.0.7.tar.gz", "has_sig": false, "md5_digest": "ae0c82bc32e3ae95ae2ffa75f45fe5f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6579, "upload_time": "2015-12-11T14:27:24", "url": "https://files.pythonhosted.org/packages/ab/ce/f550f9371c8fa173a0d264d93da15add7ed6fe3dd07bdfac73894bbed36c/aws-saml-login-1.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6b1c7e5cd18cdf8aca6dbacabdf3447f", "sha256": "8d769c4ca274bbf9667aa12a683e1bb01bcaeb702edf2f1ecf24b9ce8c41fd29" }, "downloads": -1, "filename": "aws_saml_login-1.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "6b1c7e5cd18cdf8aca6dbacabdf3447f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 10420, "upload_time": "2016-11-10T17:13:48", "url": "https://files.pythonhosted.org/packages/47/f8/3e2da04caf68a5813cb3a16ca3a6be6f42b4cd850df089433c894fcc41c1/aws_saml_login-1.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ae887b616105346035848fe4dc0f57b", "sha256": "2cb5b50d3ac696a94dcc934abc5c3d81f7d9da44915250eea6aa57424dac9111" }, "downloads": -1, "filename": "aws-saml-login-1.0.11.tar.gz", "has_sig": false, "md5_digest": "7ae887b616105346035848fe4dc0f57b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8164, "upload_time": "2016-11-10T17:13:45", "url": "https://files.pythonhosted.org/packages/52/07/2cf0a7ff99986a1c0c887180360ffe97f65daf521439bf1697a9df760b10/aws-saml-login-1.0.11.tar.gz" } ] }