待ってたら誰か検証してくれると思ったらしてくれなかったので私がやりますシリーズ、第一弾です。
コンセントポータルです。
タコ足配線でもしちゃうのでしょうか?楽しみですね。
検証してる間に我らが神野さんがわかりやすいブログを書いてくれてます!「僕のを読んでから」ぜひ神野さんのブログも読みましょう!
https://dev.classmethod.jp/articles/agentcore-consent-portal-github/
AgentCoreゲートウェイの認可複雑問題
AgentCoreゲートウェイは、MCPサーバーとユーザーの間に入って、その名の通りゲートウェイとして機能します。
こんなかんじ。
これを、太郎さんが利用した場合は太郎さんの権限で認証されることが期待値です。
MCPサーバーの呼び出しを成功させるには、AgentCoreゲートウェイにアクセスしてきたユーザーに対するMCPサーバー側のトークンを正しく紐づけて管理する必要があります。これを行ってくれるのがAgentCoreアイデンティティですが、「紐づけ作業」は自前で行う必要がありました。
この紐づけ作業が、ムズイ、メンドイ、セキュリティコワイだったのですが、 Consent Portalがまるっといい感じにやってくれます! (多分)
このなんだかややこしいやつは3LOっていうらしいです。
とはいえ、このコンセントポータルの構築、行き当たりばったりでやると絶対失敗しますので、こちらの手順でどうぞ!
手順
GitHub OAuth Appを作成
-
https://github.com/settings/developers にアクセスして「New OAuth app」をクリック
-
入力して「Register application」をクリック
項目 値 Application name なんでも Homepage URL なんでも Redirect URI http://localhost (あとで差し替えます) -
「Generate a new client secret」をクリックしてクライアントシークレットを生成します
「Client ID」「Client secret」をメモします。
Cognitoユーザープールを作成
-
Cognito管理画面で「Create user pool」をクリック
-
入力します
項目 値 Application type Traditional web application Name your application consent-portal-web Options for sign-in identifiers Email Return URL - optional https://example.com/callback (あとで差し替えます)
- ユーザープールのOverview画面で「OpenID Connect configuration URL」をメモします。
- App clientの画面で「Client ID」「Client secret」をメモします。
AgentCoreアイデンティティを作成
GitHubのOutbound Authを登録します。
- AgentCoreアイデンティティの画面で「Add Outbound Auth」→「Add OAuth client」を選択
- Included providerに「GitHub」を選び、GitHubのClient IDとClient secretを入力します
Callback URLをメモします。
次にCognitoのOutbound Authを登録します。
- AgentCoreアイデンティティの画面で「Add Outbound Auth」→「Add OAuth client」を選択
- Included providerに「Cognito」を選び、CognitoのClient IDとClient secretを入力します。
- Cognitoはさらに「Issuer」「Authorization endpoint」「Token endpoint」の入力が必要です。この3つの値はCognito画面でコピーしたOpenID Connect configuration URLにアクセスすると取得できます。(自動でやってほしい。。)
AgentCoreゲートウェイを作成
AgentCoreゲートウェイを作成します。ウィザードの制約で、若干めんどくさいことをします。
-
AgentCoreゲートウェイの画面で「Create Gateway」をクリック
-
ウィザード1ページ目はそのままクリック
-
ウィザード2ページ目で以下を入力
項目 値 Inbound Auth type Use JSON Web Tokens (JWT) JWT schema configuration Use existing Identity provider configurations Discovery URL CognitoのOpenID Connect configuration URL(ここは自動なのかよ) Clients CognitoのClient ID -
ウィザード3ページ目でターゲットを必ず追加しますが、訳あってダミーで登録します。Target typeをConnectorsにし、Pre-configured targetsをWeb Search toolにするのが一番手間がなくて良さげです。
-
残りのウィザードを進め、AgentCoreゲートウェイを作成します。
-
作成できたら、Targets欄にあるターゲットを選んだ状態で「Delete」をクリックします。要はターゲットがない状態にします。
「Gateway resource URL」(MCPサーバーのURL)をメモします。
Consent Portalを作成
Consent PortalはAgentCoreアイデンティティの画面で作成します。
- AgentCoreアイデンティティの画面で「Create portal」をクリック
- Gatewayを選択
- IdP Credential ProviderとしてCognitoのアイデンティを選択
これでConsent Portalが作成されました。Consent portal URLをメモします。
コールバックURLを入れて回る
まずはGitHubのRedirect URIをAgentCoreアイデンティに登録したGitHubのOutbound AuthにあるCallback URLにします。
次にCognitoのコールバックURL変更します。今の入力済みのを消して、「{Consent portal URL}/callback」と「 http://localhost:8080/callback 」を入力します。( http://localhost:8080/callback はClaude Codeようです)
App clientの「Login pages」タブで変更できます。
Cognitoにリソースサーバーを追加する。
理由はわかりませんが、必要なようです。無心で入力するのみです。
Cognitoの左メニューの「Applications」->「Resource servers」->「Create resource server」から、識別子にゲートウェイのMCPエンドポイントURLをそのまま入れます。
Consent Portalに一度ログイン
一度Consent portal URLにアクセスし、ログインしておきましょう。
Cognitoのログイン画面が出るので新規ユーザーのサインアップをしてください。
AgentCoreゲートウェイのターゲットを作成
AgentCoreゲートウェイのターゲットを作成するのに、必要なConsent portal URLができたので、ターゲットを作成します。
- ゲートウェイの詳細画面でTargets欄の「Add」
- 「MCP target」→ ターゲットタイプ「MCP Server」
- MCP endpointに
https://api.githubcopilot.com/mcp/ - OAuth clientはGitHubのものを選択
- Additional configurationsを開き、Auth grant typeを「Authorization code grant (3LO)」に変更
- Return URLを「/connect/callback」
- Scopesに「repo」「read:user」と入力
作成後、上部に黄色いバナーが出て、「Authorize」ボタンが表示されます。
Authorizeボタンを押す
Authorizeボタンを押すとOAuthのフローが始まりまして、たらい回しの後に、Consent Portalに遷移し、エラーが表示されます。エラーが出ますが、実は成功してます(なんでやねん!)
しばらく(数分?)するとゲートウェイターゲットのStatusがReadyになります。(めっちゃハマった)
Consent PortalでConnectを押す
さてここで、Consent PortalのConnectを押します。これは成功します。もう疑心暗鬼です。
ここで、一通り環境は完成です。
Claude Codeから接続する
MCPサーバーの設定を追加します。
claude mcp add \
-s project \
--transport http \
--client-id {CognitoのクライアントID} \
--client-secret \
--callback-port 8080 \
agentcore-gw \
https://{.....}.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp
クライアントシークレットを聞かれるので、Cognitoのクライアントシークレットを入力します。
Enter OAuth client secret:
claude codeを起動します。
claude
MCPサーバーを有効化するか聞かれるので有効化します。
続いてログインします。/mcpから認証します。
/mcp
認証後、MCPサーバーが使えるようになります。わーい
1週間ぐらいかかった。。



