Giter Site home page Giter Site logo

andreabedini / aws-credentials-from-saml Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 2.0 28 KB

Intercepts AWS credentials from SAML SSO login

Home Page: https://addons.mozilla.org/en-US/firefox/addon/aws-credentials-from-saml/

License: MIT License

JavaScript 100.00%
aws aws-saml-sso firefox-extension webextension

aws-credentials-from-saml's Introduction

AWS credentials from SAML

The problem

Enterprise companies have a strong desire to centralise identity management into a single platform/solution, like Azure AD, Auth0, Okta, G-suite SAML provider or others. In this scenario one can get access to AWS through Federated SAML SSO (you can read about it here).

But there's a problem: if you live and breathe AWS, you certanly loathe clicking around on the console and you insist scripting the hell of out your infrastructure management. In the end it's 2019 and Infrastructure as Code is not even a buzzword anymore.

The solution

This is a browser extensino that allows you to get your job done without any causing any trouble. The extension incercepts the SAMLResponse sent from the IdP to AWS and uses AWS assumeRoleWithSAML API to obtain a set of credentials that you can use from the AWS CLI or any other application.

The credentials file is automatically downloaded to your download folder as you do the SAML login. The name of the file is set to always be credentials (overwriting the file if necessary). This allows you to point the AWS CLI to a stable file.

Configuring the AWS CLI

AWS CLI can read the location of the credentials file from the environment. Setting AWS_SHARED_CREDENTIALS_FILE to the credentials file in your browser's download folder should do the trick.

Assuming browser downloads files to the folder Downloads in your home, here is what you have to do.

On Linux/macOS: add the following to .bashrc or .bash_profile

export AWS_SHARED_CREDENTIALS_FILE=$HOME/Downloads/credentials

On Windows: open the terminal and type the following (has to be done only once, the change will persist)

setx AWS_SHARED_CREDENTIALS_FILE C:\Users\<username>\Downloads\credentials

Prior art

License

Licensed under MIT License

aws-credentials-from-saml's People

Contributors

andreabedini avatar iyesin avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

feraudet iyesin

aws-credentials-from-saml's Issues

AWS SSO: multiple credentials updates

Hello,

I'm trying to setup some scripting for getting session creds for my aws-cli and stepped into some issue.
In case you have multiple roles to assume (see attachment), credentials file is updated at least twice. On first update typically there temporary session credentials (with lifetime limited to ~15 minutes). Second update gives you "long-term" credentials (limited either with aws or your org settings). Since file API for Firefox is optimized, it is very hard to catch second file update with something like inotify (at least for me, on Linux). Is there any way to get exact second set of creds?

UPD: I forgot main issue: if some process started right after first file update and before second (which could be seconds, because I need manually select role and click Sign in) it could stuck (like terraform does) or fail with message like An error occurred (ExpiredToken) when calling the %any% operation: The provided token has expired.

multiple roles to assume

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.