何が面倒だったか
AWS SSOで複数アカウントを使ってると、切り替えるたびに aws sso login → ブラウザ開く → 認証コード確認 → ボタンポチ、
を毎回やらないといけない
同じSSOの組織内のアカウント間の切り替えなのに、毎回ブラウザ認証は面倒。
granted で解決
granted を使うと、1回ブラウザ認証すれば同じSSO start
URLのアカウント間はブラウザ不要で即切り替えが可能に。
インストール(WSL2 / Linux x86_64)
# ダウンロード & 展開
cd /tmp
curl -OL https://github.com/fwdcloudsec/granted/releases/download/v0.38.0/granted_0.38.0_linux_x86_64.tar.gz
tar -xzf granted_0.38.0_linux_x86_64.tar.gz
# ~/.local/bin に配置
mkdir -p ~/.local/bin
mv granted assume ~/.local/bin/
# assumego のシンボリックリンク作成(assume スクリプトが内部で使う)
ln -sf ~/.local/bin/granted ~/.local/bin/assumego
# 確認
export PATH="$HOME/.local/bin:$PATH"
granted --version
WSL2 でブラウザが自動で開かない問題の対策
WSL2 だと xdg-open がパスのスペースで死ぬので、ラッパースクリプトを作る。
cat << 'EOF' > ~/.local/bin/wsl-open
#!/bin/sh
exec "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" "$@"
EOF
chmod +x ~/.local/bin/wsl-open
Chrome の場合はパスを変えるだけ:
exec "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe" "$@"
.bashrc の設定
# PATH(なければ追加)
export PATH="$HOME/.local/bin:$PATH"
# ブラウザ設定(WSL2用)
export BROWSER="$HOME/.local/bin/wsl-open"
# granted の assume エイリアス
alias assume="source ~/.local/bin/assume"
# 既存の sso エイリアスを assume ベースに書き換え
alias ssoaaa='assume aaa'
alias ssoaaa='assume bbb'
alias ssoaaa='assume ccc'
source ~/.bashrc するか新しいターミナルを開けばOK。
使い方
# プロファイル指定で切り替え
assume aaa
# 初回だけブラウザ認証が走る。認証したら↓
# 同じSSO start URLのアカウントはブラウザ不要で即切り替え
assume bbb # 一瞬
assume ccc # 一瞬
assume aaa # 戻すのも一瞬
# 既存のエイリアスもそのまま使える
ssoaaa
ssobbb
ssoccc
# 対話式でプロファイルを選ぶ
assume
# セッション解除
assume --unset