npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

aws-azure-login-adfs

v0.9.0

Published

Use Azure AD SSO to log into the AWS CLI when the Azure AD is federated with on-prem ADFS.

Downloads

10

Readme

view on npm npm module downloads per month

aws-azure-login-adfs

If your organization uses Azure Active Directory to provide SSO login to the AWS console, then there is no easy way to use the AWS CLI. This tool fixes that. It lets you use the normal Azure AD login (including MFA) from a command line to create a federated AWS session and places the temporary credentials in the proper place for the AWS CLI. Please note this package originated from the aws-azure-login package, and will ONLY work with Azure ADs that have been federated with an on prem ADFS environment.

Installation

You should first install the AWS CLI using the installation instructions. Then install aws-azure-login:

$ npm install -g aws-azure-login-adfs

Usage

Configuration

Before using aws-azure-login, you should first configure the AWS CLI. To configure the default profile, run:

$ aws configure

When prompted for credentials just leave the fields blank. Then configure the aws-azure-login client:

$ aws-azure-login-adfs --configure

You'll need your Azure Tenant ID and the App ID URI. To configure a named profile, use the --profile flag.

$ aws configure --profile foo
$ aws-azure-login-adfs --configure --profile foo

Logging In

Once the CLIs are configured, you can log in. For the default profile, just run:

$ aws-azure-login-adfs

You will be prompted for your username and password. If MFA is required you'll also be prompted for a verification code. To log in with a named profile:

$ aws-azure-login-adfs --profile foo

Alternatively, you can set the AWS_PROFILE environmental variable to the name of the profile.

Now you can use the AWS CLI as usual!

Getting Your Tenant ID and App ID URI

Your Azure AD system admin should be able to provide you with your Tenant ID and App ID URI. If you can't get it from them, you can scrape it from a login page from the myapps.microsoft.com page.

  1. Load the myapps.microsoft.com page.
  2. Click the chicklet for the login you want.
  3. In the window the pops open quickly copy the login.microsoftonline.com URL. (If you miss it just try again. You can also open the developer console with nagivation preservation to capture the URL.)
  4. The GUID right after login.microsoftonline.com/ is the tenant ID.
  5. Copy the SAMLRequest URL param.
  6. Paste it into a URL decoder (like this one) and decode.
  7. Paste the decoded output into the a SAML deflated and encoded XML decoder (like this one).
  8. In the decoded XML output the value of the Issuer tag is the App ID URI.

How It Works

The Azure login page uses JavaScript, which requires a real web browser. To automate this from a command line, aws-azure-login uses PhantomJS. It loads the Azure login page behind the scenes, populates your username and password (and MFA token), parses the SAML assertion, uses the AWS STS AssumeRoleWithSAML API to get temporary credentials, and saves these in the CLI credentials file.

Troubleshooting

The nature of browser automation with PhantomJS means the solution is bit brittle. A minor change on the Microsoft side could break the tool. The Azure AD is also very configurable so there's a decent chance this tool doesn't cover your use case. If something isn't working, you can have the tool print out more detail on what it is doing to try to diagnose. aws-azure-login uses the Node debug module to print out debug info. Just set the DEBUG environmental variable to 'aws-azure-login'. On Linux/OS X:

$ DEBUG=aws-azure-login-adfs aws-azure-login-adfs

On Windows:

> set DEBUG=aws-azure-login-adfs
> aws-azure-login-adfs

Support for Other Authentication Providers

Obviously, this tool only supports Azure AD as an identity provider. However, there is a lot of similarity with how other logins with other providers would work (especially if they are SAML providers). If you are interested in building support for a different provider let me know. It would be great to build a more generic AWS CLI login tool with plugins for the various providers.