GitHub の「Resource protected by organization SAML enforcement」
組織が SAML のシングルサインオン(SSO)でサインインする設定で、トークンがまだその組織に許可されていない、という意味です。GitHub の説明では、個人アクセストークン(Classic)は作ったあとに許可しないと、SAML SSO を使う組織に入れません。トークンの権限(スコープ)の問題ではありません。同じトークンを組織に許可して、やり直します。
答えの全体
実際の例です(公開の報告):
HTTP 403
{"message": "Resource protected by organization SAML enforcement. You must grant your Personal Access token access to this organization.",
"documentation_url": "https://docs.github.com/articles/authenticating-to-a-github-organization-with-saml-single-sign-on/",
"status": "403"}
GitHub の REST API に対する認証より:403 のときは X-GitHub-SSO ヘッダーに、トークンを許可するための URL が入ります。その URL は1時間で切れます。形はこうです(別の報告から):
X-GitHub-SSO: required; url=https://github.com/orgs/ORG/sso?authorization_request=...
同じページには、ほかに2つの答え方があります。403 ではなく 404 Not Found を返すことがあります。また、複数の組織にまたがる呼び出しでは、許可が要る組織の結果だけが抜け、ヘッダーが X-GitHub-SSO: partial-results; organizations=21955855,20582480 のように、その組織を ID で示します。ヘッダーを見るには、失敗した住所を curl で呼びます。
curl -i -H "Authorization: Bearer your-token" "https://api.github.com/the/address/that/failed"
トークンを許可する
GitHub のシングル サインオンで利用するために個人用アクセス トークンを認可するより:
- GitHub の右上の自分のアイコン → Settings → Developer settings → Personal access tokens(Classic のトークン)。
- そのトークンの横の Configure SSO。
- 開いた一覧で、組織の右の Authorize。
ヘッダーの URL を1時間以内に開いても許可できます。トークン自体は変わらないので、入れてある所は直さなくてかまいません。
- Configure SSO が出ない:トークンを許可できるのは、外部の ID が結び付いてからです。組織の ID プロバイダー(IdP)で一度サインインしてから、もう一度見ます。
- IP 許可リスト:組織が属する Enterprise で、IP 許可リストとシングルサインオンの両方が Enterprise の単位で有効なら、自分の IP アドレスも Enterprise の単位で許可されている必要があります。
- 前は使えた:許可は、組織や Enterprise のオーナーが取り消したとき、組織から外れたとき、トークンのスコープを変えたり作り直したり(regenerate)したとき、トークンの期限が切れたときに外れます。もう一度許可します。
- SSO を強制していない組織:その組織に ID が結び付いたあとは、SSO を強制していなくても、許可したトークンと SSH キーしか使えません。
Fine-grained のトークン
GitHub の説明では、Fine-grained の個人アクセストークンは、作るときに許可されてから組織に入れるようになります。上の手順は Classic のトークン用です。Fine-grained のトークンが組織の物に届くのは、その組織を Resource owner(持ち主)にして作ったときだけです。それでも届かないときは「Resource not accessible by personal access token」へ。
IntelliJ IDEA では「User authorization failed」
IntelliJ IDEA に入っている GitHub の機能が、この断りをどう受け止めるか。ソース(2026年10月30日に確認・IntelliJ IDEA:GithubApiRequestExecutor.kt・GithubApiRequest.kt・GHAPIExceptionUtil.kt・GHSelectorErrorStatusPresenter.kt)では:
- REST の 403 は、文に「API rate limit exceeded」と無ければログインの失敗として扱われ、この文もそうなります。Pull Requests のツールウィンドウがつなぐときは「Could not connect to repository … with account …」(このアカウントでリポジトリにつなげない)と「User authorization failed」(ユーザーの認可に失敗)が出て、Log in again… が出ます。GitHub の文は出ません。
- 問い合わせのコードは
X-GitHub-SSOを読まないので、トークンを許可する URL は出ません。上の手順で許可するか、上のcurlで URL を取ります。Log in again… ではトークンは許可されません。許可は GitHub の側でします。 - トークンでのログインの Generate… は classic のトークンの画面を開きます(何が入った状態で開くか)。そこで作った classic のトークンは、組織に届く前に上の Configure SSO での許可が要ります。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。Fine-grained のトークンでも、repo を付けた Classic のトークンでも使えます。GitHub が X-GitHub-SSO ヘッダー付きの 403 で断ったときは、組織が SAML のシングルサインオンを使っていることと、ヘッダーにある許可の住所を画面に出します。そこでトークンを許可してから、読み直してください。受信箱・差分・会話は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Resource not accessible by personal access token」 · 「API rate limit exceeded」 · GitHub のマージの断り(405・409) · GitHub のレビューの断り(422) · GitHub の検索の 422「Validation Failed」 · GitHub の差分の 406「too_large」・3,000件 · GitHub の行のコメントの 422「must be part of the diff」 · GitHub のブランチの更新の断り(422) · GitHub のプルリクが作れない(422・403) · GitHub の自動マージの断り · GitHub の下書き・レビュー準備完了・閉じるの断り · GitHub の会話の解決の断り · GitHub のチェックが出ない(check runs の 403) · GitHub のファイルの中身が読めない · GitHub の比較の断り(404・422) · GitHub のコメント・返信の断り(ロック・アーカイブの 403) · GitHub のマージの方法の断り(405) · GitHub のブランチが見つからない(404・301) · GitHub Enterprise Server につながらない · GitHub のレビューの依頼が出ない · GitHub のプルリクの一覧が足りない · GitHub の 404・名前を変えたリポジトリ(301・307) · GitHub の行のコメントが outdated・差分に無い · GitHub のプルリクの更新・通知が遅い · GitHub の変更の提案が適用できない · GitHub の必須チェックが Expected のまま · GitHub でコードオーナーのレビューが要る · GitHub で未解決の会話がマージを止める · GitHub で署名の無いコミットがマージを止める · GitHub のマージキューでマージするブランチ · GitHub でマージが最後の push の承認を待っている · GitHub でマージがコードスキャンの結果を待っている · GitHub でマージがコード品質の結果を待っている · GitHub でコードのカバレッジの水準がマージを止める · GitHub でライセンスの適合の結果がマージを止める · GitHub でブランチのロックや更新の制限がマージを止める · GitHub でマージの後にブランチが消えない · GitHub でチームの承認(Required reviewers)がマージを止める · GitHub でシークレットスキャンのアラートがマージを止める · GitHub でスタックしたプルリクがマージできない · GitHub で push の規則が push を止める · GitHub でコミットのメタデータの規則がマージを止める · GitHub で強制 push が止められる · GitHub でプルリクをマージしても issue が閉じない · GitHub のプルリクを手元にチェックアウトできない · GitHub のプルリクがマージ先と衝突している · GitHub で変更を依頼された・レビューを取り消す · GitHub で共同作者がコミットに数えられない · GitHub で依存関係のレビューのチェックが失敗する · GitHub で Dependabot がプルリクをリベースしない · GitHub でフォークが同期できない · GitHub でプルリクのベースのブランチを変えられない · GitHub でプルリクを取り消せない · GitHub でプルリクのテンプレートが出ない · GitHub でプルリクにラベルや担当者が付かない · GitHub でプルリクを閉じられない・開き直せない · GitHub でプッシュ保護にプッシュを止められた · GitHub でプルリクのコメントが隠された · GitHub でデプロイが成功するまでプルリクをマージできない · GitHub でチームに頼んだレビューがメンバーに置き換わった · GitHub でプルリクのファイルの Viewed が外れた · GitHub でマージしていないプルリクがマージ済みになった · GitHub で Copilot のレビューが承認に数えられない · GitHub でワークフローが作ったプルリクのチェックが動かない · GitHub でプルリクに Update branch のボタンが出ない · GitHub で Dependabot のプルリクのチェックが失敗する · GitHub でフォークからのプルリクのチェックが失敗する · GitHub でコミットメッセージの [skip ci] でチェックが動かない · GitHub で保存期間を過ぎてチェックが消えた · GitHub の公開リポジトリのコードレビューの制限 · GitHub でリポジトリのプルリクがオフ・制限されている · GitHub でスタックのプルリクごとにチェックが走る · GitHub でスカッシュでマージ済みのコミットが次のプルリクに出る · GitHub のプルリクでファイルの差分が出ない · GitHub でフォークのプルリクのブランチに push できない · GitHub のプルリクのチェックが取り消された · GitHub で Rebase and merge が使えない · GitHub のマージのコミットメッセージが思った形にならない · GitHub のプルリクでファイルの全行が変わったと出る · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English