Metadata-Version: 2.4
Name: jumpcloud-awscli
Version: 0.1.1
Summary: JumpCloud AWS CLI Authentication with Device Trust
Home-page: https://github.com/prashantbanthia/jumpcloud-awscli
Author: Prashant Banthia
Author-email: Prashant Banthia <prashantbanthia98@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/prashantbanthia/jumpcloud-awscli
Project-URL: Bug Tracker, https://github.com/prashantbanthia/jumpcloud-awscli/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: boto3>=1.20.0
Requires-Dist: requests>=2.25.0
Requires-Dist: selenium>=4.0.0
Requires-Dist: beautifulsoup4>=4.9.0
Requires-Dist: configparser>=5.0.0
Requires-Dist: chromedriver-binary-auto
Dynamic: author
Dynamic: home-page
Dynamic: requires-python

# JumpCloud AWS CLI Authentication Utility

A Python utility for authenticating with AWS CLI using JumpCloud SAML and Device Trust certificates.

## Features

- Browser-based authentication with JumpCloud
- Automatic Device Trust certificate handling
- SAML assertion capture and parsing
- AWS STS role assumption
- AWS CLI credential configuration
- Cross-platform (works on macOS, Windows, and Linux)

## Installation

### Basic Installation

```bash
pip install jumpcloud-awscli
```

### Installation with ChromeDriver (Optional)

The package requires ChromeDriver to work with Selenium. You can either:

1. **Install ChromeDriver separately** (recommended for macOS users):

   **For macOS:**
   ```bash
   brew install --cask chromedriver
   xattr -d com.apple.quarantine $(which chromedriver)
   ```

   **For Windows:**
   Download from [ChromeDriver website](https://chromedriver.chromium.org/downloads) and add to PATH

   **For Linux:**
   ```bash
   # Debian/Ubuntu
   sudo apt-get install chromium-chromedriver
   
   # CentOS/RHEL
   sudo yum install chromedriver
   ```

2. **Or use Python ChromeDriver package** (may have SSL issues on some systems):
   ```bash
   pip install jumpcloud-awscli[chromedriver]
   ```

## Requirements

- Python 3.6+
- Chrome or Chromium browser
- AWS CLI installed and configured
- JumpCloud account with Device Trust certificates installed

## macOS SSL Certificate Issues

If you're on macOS and encounter SSL certificate errors, run:

```bash
/Applications/Python*/Install\ Certificates.command
```

This should fix the SSL certificate verification problems.

## Usage

### Basic Usage

```bash
# Authenticate with JumpCloud and update AWS credentials
jumpcloud-aws --url "https://sso.jumpcloud.com/saml2/yourapp"
```

### All Options

```bash
jumpcloud-aws --url "https://sso.jumpcloud.com/saml2/yourapp" \
              --profile "jumpcloud" \
              --duration 43200 \
              --region "us-west-2" \
              --debug
```

### Using Environment Variables

You can set the JumpCloud URL as an environment variable:

```bash
# Set the environment variable
export JUMPCLOUD_AWS_URL="https://sso.jumpcloud.com/saml2/yourapp"

# Then you can run without the --url parameter
jumpcloud-aws
```

## How It Works

1. Launches a Chrome browser session to authenticate with JumpCloud
2. The browser automatically presents your Device Trust certificate during authentication
3. After successful authentication, it captures the SAML assertion 
4. Parses the SAML assertion to extract available AWS roles
5. Lets you select a role (if multiple are available)
6. Uses AWS STS to assume the selected role with the SAML assertion
7. Updates your AWS CLI credentials file with temporary credentials

## Troubleshooting

### Chrome/ChromeDriver Issues

If you encounter issues with Chrome or ChromeDriver, verify:

1. Chrome is installed
2. ChromeDriver is correctly installed (run `chromedriver --version` to check)
3. The ChromeDriver version matches your Chrome version

### Debug Mode

For more detailed output, use the `--debug` flag:

```bash
jumpcloud-aws --url "https://sso.jumpcloud.com/saml2/yourapp" --debug
```

### Common Issues

- **Certificate selection problems**: If prompted for a certificate and it fails, check that your JumpCloud Device Trust certificate is properly installed.
- **Authentication timeouts**: If the process times out during authentication, check your network connection and ensure you're using the correct JumpCloud credentials.
- **No roles found**: Verify that your JumpCloud user has the proper AWS application role assignments.
- **SSL certificate errors**: On macOS, run `/Applications/Python*/Install\ Certificates.command` to install the proper SSL certificates.

## License

MIT License
