---
title: [認証・認可] SSO実践 CognitoとEntra IDの連携検証
tags: 
author: [株式会社エヌアイデイ](https://image.docswell.com/user/NID_Tech)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/PJXQYPLX7X.jpg?width=480
description: 近年、クラウドサービスの利用拡大に伴い、認証・認可の仕組みはシステム開発における重要な要素となっています。 こうした背景から、株式会社エヌアイデイでは今後の認証領域の標準モデルを確立し、開発の迅速化とセキュリティ強化を実現することを目的として、Amazon Cognitoを利用した認証・認可の技術検証を実施しました。  エヌアイデイの若手メンバーが参加し、基礎技術の習得と実践的な経験を目的とした社内の技術検証取り組みの資料です。
published: July 28, 26
canonical: https://image.docswell.com/s/NID_Tech/Z4NL9J-2026-07-28-101324
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/PJXQYPLX7X.jpg)

[認証・認可] SSO実践
CognitoとEntra IDの連携検証
2026年7月31日
(検証実施時期：2025年7-10月)
株式会社エヌアイデイ
ICTデザイン事業部ANA部第2課
Copyright(c)2026 NID All Rights Reserved
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/3JK93DL9JD.jpg)

参加メンバー
ICTデザイン事業部ANA部第2課
ICTデザイン事業部ANA部第2課
ICTデザイン事業部ANA部第2課
ICTデザイン事業部ANA部第2課
ICTデザイン事業部ANA部第2課
ICTデザイン事業部ANA部第2課
※2025年7月～10月検証実施
2
A.I.
T.T.
S.K.
I.A.
S.S.
H.D.
（3年目 ※検証当時）
（2年目 ※検証当時）
（2年目 ※検証当時）
（2年目 ※検証当時）
（1年目 ※検証当時）
（1年目 ※検証当時）


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LE3WGR39E5.jpg)

目次
1．検証概要
2．検証1 Cognito + API Gateway
3．検証2 Cognito + Entra ID
4．検証3 Cognito Managed Login + WAF
5．まとめ
6．参考
※本資料に登場する会社名・製品・サービス名、ロゴマークなどは該当する各
社の商号・商標または登録商標です。
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/8EDK1Y487G.jpg)

1．検証概要
■検証目的
今後の認証領域の標準モデルを確立し、開発の迅速化とセキュリティ強化を実現するため、
以下の検証を実施する。
1. API GatewayのCognitoオーソライザー機能を実装し、APIへのアクセスを認証により制御
できることを検証する。
2. CognitoとEntra ID間のIdP連携を実装し、API Gatewayへのアクセスを認証により制御
できることを検証する。
3. CognitoにおけるManaged Login機能によるログインページのカスタマイズ性の確認および
Managed LoginにAWS WAFを用いたアクセス制御を検証する。
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/V7PKQ6MWJ8.jpg)

1．検証概要
■Cognitoとは
Amazon Cognitoは、アプリやWebサービスのログイン画面とその裏側の仕組みをまとめて
提供してくれるサービスである。
ID/パスワードでのログインは元より、GoogleやFacebookといったソーシャルメディアの
アカウントを使ったログイン機能も実装することができる。
Amazon Cognito
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/2JVV5399JQ.jpg)

1．検証概要
■API Gateway検証内容
・ API gatewayへの有効なIDトークンを付与したリクエストが認証されることの確認を行う。
・ API gatewayへの無効なIDトークンを付与したリクエストが認証されないことの確認を行う。
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/5EGL63Z4JL.jpg)

1．検証概要
■Entra ID連携検証内容
・ API Gatewayへの有効なIDトークンを付与したリクエストが認証されることの確認を行う。
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/4JQY45LR7P.jpg)

1．検証概要
■Managed Login検証内容
・ Cognitoの標準画面からカスタマイズすることのできる項目を確認し、標準機能で実装する
ことのできる画面構成の確認を行う。
・ 一般的なログイン画面を想定し、カスタマイズのみで再現可能な範囲とCSSカスタマイズが
必要となる要件を整理する。
■WAF検証内容
・レート制限により大量の不正アクセスからCogintoを防御することができることを実証する。
・ IPアドレス制限で許可しないネットワークからのアクセスを禁止することができることを
実証する。
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/K74WQ9DQE1.jpg)

2．Cognito + API Gateway


# Page. 10

![Page Image](https://bcdn.docswell.com/page/LJ1YPKZLEG.jpg)

2-1. 構成図
① Client端末よりAmazon Cognitoへ認証情報を
Amazon Cognito
送信し、JWT(JSON Web Token)を取得
する。
② 取得したJWTを含め、APIリクエストを送信
する。
③
①
②
④
API Gateway
Client 端末
③ API Gatewayは、リクエストに含まれるJWT
⑤ AWS Lambda
をAmazon Cognitoのオーソライザー機能に
より認証する。
④ 認証が成功した場合、Lambda関数が実行
される。
⑤ Lambda関数が実行結果をClient端末に返す。
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GJWG2D9Q72.jpg)

2-2．設計背景
■Cognitoと連携するAWSリソースの選定
以下の理由により、ALBではなくAPI Gatewayを採用した。
・ALB+Cognitoの構成と比較して、認証フローがブラックボックス化されず仕様を理解
しやすい構成にできること。
・API Gatewayのアクセス制御におけるベストプラクティスのひとつであること。
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4EZLDG9373.jpg)

2-3．シーケンス図
1.
ユーザから認証情報を送信すると、
Cognito IdPにて検証される。認証される
とJWT(JSON Web Token)が端末へ
送信される。
①
2.
②
送信されたJWTを含めてAPIリクエストを
送信するとAPI Gatewayは、Cognitoの
オーソライザー機能を通してJWTを検証
する。認可すると、リクエストはLambda
関数に転送され、その処理結果が端末に
12
レスポンスとして送信される。


# Page. 13

![Page Image](https://bcdn.docswell.com/page/Y76W1YKZ7V.jpg)

2-4．環境構築
2-4-1．Lambda関数の作成
2-4-2．API Gateway(REST API)の作成
2-4-3．Cognitoのユーザプール作成
2-4-4．Cognito Authorizerの設定
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/G75M4GP974.jpg)

2-4-1．Lambda関数の作成
APIリクエスト時に、Cognitoのユーザ
ネームに応じて、レスポンスを返すLambda
関数を作成する。
※使用言語はPython
・ユーザネームの末尾が「_1」の場合、
「Hello」
・ユーザネームの末尾が「_2」の場合、
「Hello world」
・上記以外の場合、「Unknown User」
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/9J29VY65ER.jpg)

2-4-2．API Gateway(REST API)の作成
1.
API Gatewayのコンソール画面でREST
APIを作成する。
2.
APIのエンドポイントとなる
「リソース」と、そのリソースに対する
操作を定義する「メソッド」を作成する。
3.
作成したAPIをデプロイして、
外部からアクセス可能な状態にする。
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/DEY43G96JM.jpg)

2-4-3．Cognitoのユーザプール作成
1.
マネジメントコンソールのCognito画面で
ユーザプールを作成する。
・アプリケーションタイプは、SPAを
選択する。
・認証フローは、ユーザ名とパスワードを
選択する。
2.
①で作成したユーザプールに、ユーザ
アカウントを作成する。
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/VJNYVGD178.jpg)

2-4-4．Cognito Authorizerの設定
1.
作成したAPI Gatewayの画面から、
新たにAuthorizerを作成する。
・タイプはCognitoを選択する。
・作成したユーザプールを選択する。
・トークンソースはAuthorizationを入力
する。
2.
作成したAuthorizerをAPIのメソッドに
適用する。
※IDトークンを取得してオーソライザーを
17
テストする。


# Page. 18

![Page Image](https://bcdn.docswell.com/page/YE9P6WGYJ3.jpg)

2-5．検証
2-5-1．IDトークンの取得
2-5-2．APIリクエストの送信とレスポンスの確認
2-5-3．トークン認証の検証
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/GE8DZNVKED.jpg)

2-5-1．IDトークンの取得
Curlコマンドを利用して、Cognitoからトークンを取得する。
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/LELMDP5P7R.jpg)

2-5-2．APIリクエストの送信とレスポンスの
確認
Curlコマンドを利用し、IDトークンを付与したうえでAPIリクエストを送信し、
それぞれのユーザアカウントごとのレスポンスを確認する。
・ユーザネームの末尾が「_1」の場合、「Hello」
・ユーザネームの末尾が「_2」の場合、「Hello world」
・上記以外の場合、「Unknown User」
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4JMYP432JW.jpg)

2-5-3．トークン認証の検証
無効なIDトークンや期限切れのIDトークンを利用してAPIリクエストを送信し、API
Gatewayが認証エラーを返すことを確認する。
IDトークンが付与されていないリクエストを送信し、認証エラーとなることを確認する。
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/PJR91WQ579.jpg)

3．Cognito + Entra ID


# Page. 23

![Page Image](https://bcdn.docswell.com/page/PEXQYP5XJX.jpg)

3-1．設計背景
■連携を行うEntra IDの環境について
検証で想定していた構成は Entra ID Freeで要件を満たすことができたため、ライセンス費用の
発生しないEntra ID Free(無料プラン)を採用した。
Entra ID連携にあたり、Entra ID側の作業用アカウントにはビルドインロール(あらかじめ
Azure側が用意しているロール)であるクラウドアプリケーション管理者ロールを使用した。
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/3EK93D69ED.jpg)

3-2．構成図
① URLからAPI Gatewayにアクセスする。
② API GatewayからCognitoにリクエスト許可が
行われる。
③ CognitoからEntra ID IdPにリダイレクトされる。
④ 端末からEntra ID IdPにSAMLリクエスト、
サインインを行う。
⑤ 認証されるとEntra ID IdPからSAMLレスポンスを
返す。
⑥ 端末からCognitoにSAMLアサーションを行う。
⑦ CognitoからJWTトークン発行される。
⑧ トークンを付与してAPIへリクエストを行う。
⑨ トークンの検証を行う。
⑩ 認証が成功した場合、リクエストが転送され、
Lambda関数が実行される。
⑪ Lambda関数の実行結果をClient端末に返す。
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/L73WGR6975.jpg)

3-3．シーケンス図
1. ユーザから認証情報を送信すると、 Entra ID IdPに
て検証される。認証されるとJWT（JSON Web
Token）が端末へ送信される。
①
2. 送信されたJWTを含めてAPIリクエストを送信すると
API Gatewayは、Cognitoのオーソライザー機能を
通してJWTを検証する。認可すると、リクエストは
Lambda関数に転送され、その処理結果が端末に
②
25
レスポンスとして送信される。


# Page. 26

![Page Image](https://bcdn.docswell.com/page/87DK1YV8JG.jpg)

3-4．環境構築
3-4-1．Cognitoの作成（AWS）
3-4-2．アプリケーションの作成(Azure)
3-4-3．SSOの設定(Azure)
3-4-4．ユーザの追加(Azure)
3-4-5．アイデンティティプロバイダーの追加(Azure)
3-4-6．Managed Loginページの設定(AWS)
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/VJPKQ6VWE8.jpg)

3-4．環境構築
当検証ではAWSおよびAzureの両環境を操作します。
AWS上の作業では右上にAWSマークを、
Azure上の作業では右上にAzureマークを記載しています。
AWSでの作業
27
Azureでの作業


# Page. 28

![Page Image](https://bcdn.docswell.com/page/2EVV53Z9EQ.jpg)

3-4-1．Cognitoの作成（AWS）
Cognitoからアプリケーションクライアントを作成する。
シークレットクライアントを使用しないため、シングルページアプリケーションを採用する。
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/57GL6344EL.jpg)

3-4-2．アプリケーションの作成(Azure)
Entra IDで「エンタープライズ アプリケーション」の「独自のアプリケーションの
作成」からアプリケーションを作成する。
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/4EQY45GRJP.jpg)

3-4-3．SSOの設定(Azure)
作成したアプリケーションの
シングルサインオンの設定から
SAML認証を選択する。
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/KJ4WQ95Q71.jpg)

3-4-3．SSOの設定(Azure)
SAML認証メニューで以下の
設定を行う。
・識別子の追加
・応答 URLの追加
・SAML証明書の取得
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/LE1YPKWL7G.jpg)

3-4-4．ユーザの追加(Azure)
Entra IDに、SSO連携したCognitoにログインするためのテストユーザを追加する。
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/GEWG2D6QJ2.jpg)

3-4-5．アイデンティティプロバイダーの
追加(AWS)
Cognito側のプロバイダー設定を行う。
フェデレーティッドサインインのオプションはSAMLを選択する。
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/47ZLDGY3J3.jpg)

3-4-5．アイデンティティプロバイダーの
追加(AWS)
メタデータドキュメントに、Entra IDのアプリケーションから取得したSAML証明書の
XMLファイルをアップロードする。
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/YJ6W1YDZJV.jpg)

3-4-5．アイデンティティプロバイダーの
追加(AWS)
属性マッピングの設定を入力すると、メールアドレスのマッピングが可能になる。
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/GJ5M4G39J4.jpg)

3-4-5．アイデンティティプロバイダーの
追加(AWS)
Cognitoユーザプールにアイデンティティプロバイダーが作成されたことを確認する。
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/LE3WGR62E5.jpg)

3-4-6．Managed Loginページの設定
(AWS)
ログイン操作に使用するManaged Loginページの設定を行う。
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/8EDK1YV67G.jpg)

3-5．検証
3-5-1．Managed Loginページからのサインイン
3-5-2．IDトークンの取得
3-5-3．トークン認証の検証
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/V7PKQ6RZJ8.jpg)

3-5-1．Managed Loginページからの
サインイン
ログインページを表示して、Entra IDのメールアドレスとそのパスワードを入力する。
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/2JVV53RMJQ.jpg)

3-5-1．Managed Loginページからの
サインイン
Entra IDでの認証に成功し、ログイン成功の画面が表示される。
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/5EGL63MXJL.jpg)

3-5-2．IDトークンの取得
Curlコマンドを利用して、Cognitoからトークンを取得する。
IDトークンを付与して、リクエストを送信する。
付与したトークン：IDトークン
レスポンス：Hello
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/4JQY45R57P.jpg)

3-5-3．トークン認証の検証
アクセストークンを利用してAPIリクエストを送信し、API Gatewayが認証エラーを返すことを
確認する。
付与したトークン：アクセストークン
レスポンス：Unauthorized
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/K74WQ98VE1.jpg)

4．Cognito Managed Login
+ AWS WAF


# Page. 44

![Page Image](https://bcdn.docswell.com/page/LJ1YPK24EG.jpg)

4-1．構成図
条件を満たした
通信のみ許可
Managed Login
WAF
①
Deny
Allow
Cognito
③
②
④
API Gateway
「検証1」の構成で、Cognitoの前段にWAFを追加する
44
⑤
Lambda


# Page. 45

![Page Image](https://bcdn.docswell.com/page/GJWG2DRZ72.jpg)

4-2．シーケンス図
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/4EZLDGRL73.jpg)

4-3．環境構築
4-3-1．Managed Loginの画面作成
4-3-2．Managed Loginの主な設定値
4-3-3．AWS WAFの設定
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/Y76W1YRM7V.jpg)

4-3-1．Managed Loginの画面作成
AWSマネジメントコンソール上のツールを用いてGUIで作成する。
本検証では特定環境で導入しているネクストセットのログイン画面の再現を行った。
47
Cognitoの基本ログイン画面
再現するNextsetのログイン画面


# Page. 48

![Page Image](https://bcdn.docswell.com/page/G75M4G8Q74.jpg)

4-3-2．Managed Loginの主な設定値
48
項目
パラメータ
備考
ディスプレイモード
ブラウザアダプティブ
「ライトモードのみ」を設定した場合、ダークモードでアクセスすると初期画面が表示される
プライマリボタンの色
背景
：E38851 100%
テキスト：FFFFFF 100%
参考元とした画面を踏襲した色使いとした
フォーカス状態
色：004EA2
フォームを入力中であることを示すアクセントカラーには、NIDのコーポレートカラーである地中海
ブルーを採用した
フォームコンテナロゴ
ロゴの含有：フォーム内
ロゴの場所：フォームの上部
背景画像 ：全透過画像
参考元に寄せるため、フォームの背景を設けず、上部に白抜きロゴのみを配置した
入力
プレースホルダーテキスト：
FFFFFF 100%
背景：CCCCCC 100%
暗い背景に合わせて文字色を白に設定し、背景色はライトモードでも視認性のよい薄いグレーと
した
ページのテキスト
見出し
：FFFFFF
説明
：FFFFFF
本文テキスト：FFFFFF
暗い背景に合わせて全体の文字色を白に設定した
100%
100%
100%
100%


# Page. 49

![Page Image](https://bcdn.docswell.com/page/9J29VYKWER.jpg)

4-3-3．AWS WAFの作成
Cloud Formationによるコードで、作成した
Managed Loginユーザプールに対するWAF
リソースの作成を行った。
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/DEY43GN9JM.jpg)

4-3-4．検証
4-3-4-1．Managed Login画面の作成
4-3-4-2．レート制限による大量アクセスからの防御
4-3-4-3．IP制御によるネットワーク制御
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/VJNYVGXD78.jpg)

4-3-4-1．Managed Loginの画面作成
実際に作成したログイン画面
51
モデルとしたNextsetのログイン画面
作成したManaged Login画面


# Page. 52

![Page Image](https://bcdn.docswell.com/page/YE9P6W88J3.jpg)

4-3-4-1．Managed Loginの画面作成
作成したManaged Login画面全体
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/GE8DZN8ZED.jpg)

4-3-4-1．Managed Loginでできること
・ロゴの挿入
・各コンポーネントの配色の変更
・フォーム(入力欄)の配置位置の変更
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/LELMDPR17R.jpg)

4-3-4-1．Managed Loginでできないこと
・ボタン名やエラーメッセージなど、表示させる文言の変更
・用意されていないボタンやフォーム、チェックボックスの追加
・用意されていない画面遷移(秘密の質問ページへのリダイレクトなど)
・カスタマイズした画面設定のバージョニング
・一部パラメータの細かいカスタマイズ ※後述
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/4JMYP4R5JW.jpg)

4-3-4-1．Managed Loginで設定(再現)
できないこと
文章の内容やフォント、字の大きさを編集することができない
用意されていない
アイテムを配置
できない
IDとパスワード入力欄を同じ画面に配置できない
(IDとパスワードを1画面に納めるテンプレートがない)
55
※フッターを設けることは可能


# Page. 56

![Page Image](https://bcdn.docswell.com/page/PJR91WRZ79.jpg)

4-3-4-1．Managed Loginでできないこと
■細かいカスタマイズの課題点について
フォームの説明文と入力テキストの色を個別に指定することができない。このため、
ダークモードのようなデザインを設計すると説明文が背景に溶け込んでしまい、視認性が
低い画面構成となってしまう。
56


# Page. 57

![Page Image](https://bcdn.docswell.com/page/PEXQYPR1JX.jpg)

4-3-4-1．Managed Loginでできないこと
■認証機能のカスタマイズについて
指定の回数パスワードを間違えた際のロックアウト設定やパスワードポリシーなど、認証
機能の設定値はCognitoのユーザプール側で制御をするため、Managed Loginで設定する
ことはできない。
ユーザ
57
Cognito
Managed Login
ユーザプール
ログイン画面
認証ルール、ユーザ管理
Managed Loginはログイン画面のみを提供する
※認証設定はManaged Loginと紐づいたユーザプールで行う


# Page. 58

![Page Image](https://bcdn.docswell.com/page/3EK93DRMED.jpg)

4-3-4-2．WAF制限レート制限による大量
アクセスからの防御
スクリプトを用いた大量アクセスからの防御を実施する。
WAFにてレート制限を行うしきい値を設定する。
添付画像の設定では、同一IPから5分間に50回の
アクセスがあった場合に、以降のアクセスを
ブロックするよう設定した。
58


# Page. 59

![Page Image](https://bcdn.docswell.com/page/L73WGR8275.jpg)

4-3-4-2．WAF制限レート制限による大量
アクセスからの防御
スクリプトを用いて大量アクセスを実施する。
指定した回数を超えたアクセスがWAFにより
ブロックされることを確認した。
ただし、厳密な指定回数に達した場合に即時
ブロックされるのではなく、WAFのフロント
サービス全体にブロック指示が反映されるまで
わずかにタイムラグが発生していた。
59


# Page. 60

![Page Image](https://bcdn.docswell.com/page/87DK1YM6JG.jpg)

4-3-4-3．WAF制限 IP制御による
ネットワーク制御
CognitoにIP制限を実施し、指定のCIDR以外
からアクセスを行うとWAFによるブロックが
行われることを確認する。
作業用PCのグローバルアドレスのみからの
アクセスを許可し、他のNWからはCognito
Managed Login画面まで到達することが
できないよう設定を行う。
60


# Page. 61

![Page Image](https://bcdn.docswell.com/page/VJPKQ6QZE8.jpg)

4-3-4-3．WAF制限 IP制御による
ネットワーク制御
許可していないNWからCognito Managed Loginへアクセスすると、WAFにブロックされて
以下の403エラーメッセージが表示された。
61


# Page. 62

![Page Image](https://bcdn.docswell.com/page/2EVV535MEQ.jpg)

5．まとめ


# Page. 63

![Page Image](https://bcdn.docswell.com/page/57GL636XEL.jpg)

5-1．検証結果
■検証1
認証されたAPIリクエストのみ、Lambda関数のレスポンスを正常に受け取れることを
確認した。
IDトークンが無効、あるいは付与されていないリクエストには認証エラーが返されることから、
Cognitoオーソライザー機能がAPIへのアクセスを適切に制御できることを実感できた。
■今後の展望
Cognitoのグループ機能やカスタムスコープ機能を活用することで、単にユーザーがシステムに
アクセスできるかだけではなく、「そのユーザーがどのリソースに対して、どのような操作を許
可されているか」を細かく定義し、多層的かつセキュアな認証制御を行えることが期待できる。
63


# Page. 64

![Page Image](https://bcdn.docswell.com/page/4EQY4545JP.jpg)

5-1．検証結果
■検証2
続くEntra IDとのSSO連携では、SAML認証やリダイレクト処理をほとんど意識せずにシングル
サインオンが行えることを確認できた。
■今後の展望
Entra IDの条件付きアクセスポリシーを活用し、 アクセス元や端末状態に応じた多層的な認証制
御の実装を検討することで、認証の高度化とセキュリティ強化が期待できる。 さらに、Intuneと
の連携を行えば、より一層きめ細かなアクセス制御が実現できる。
64


# Page. 65

![Page Image](https://bcdn.docswell.com/page/KJ4WQ9QV71.jpg)

5-1．検証結果
■検証3
Cognito Managed Loginは基本的なデザイン調整しか行うことができないことを確認した。
そのため、UI要件がシンプルな場合は迅速な開発が可能である一方、独自のUX/UIを実装
する場合には不向きな機能であった。
WAFとの統合は、通常のWAFと同様の制御が可能で、Cognitoの認証エンドポイントを保護
する上で非常に有効だと実感した。
■今後の展望
UI要件に応じて、「Managed Login + WAF」と「独自UI実装 + WAF」の2パターンの標準
モデルを定義して使い分けることで案件対応における開発速度の向上が期待できる。
65


# Page. 66

![Page Image](https://bcdn.docswell.com/page/LE1YPKP47G.jpg)

5-2．躓いたところ
検証1
■事象
APIリクエストが「Unauthorized」（未認証）となってしまった。
■原因と解決策
認証フローを理解できておらず、IDトークンを付与せずにAPIリクエストを送信してしまった。Cognito IdP
から、認証に必要なJWTを取得し、取得したJWTをリクエストヘッダに含め、APIリクエストを送信する。
■躓いたことでのきづき
66
IDトークンが付与されていないリクエストを送信し、認証エラーとなることを確認できたこと。


# Page. 67

![Page Image](https://bcdn.docswell.com/page/GEWG2D2ZJ2.jpg)

5-2．躓いたところ
検証2
■事象
APIリクエストが「Unauthorized」（未認証）となってしまった。
■原因と解決策
認証フローを理解できていなかったためIDトークンを付与せずに、アクセストークンを付与して
送信してしまったこと。
Entra ID IdPから、認証に必要なJWTを取得し、取得したJWTをリクエストヘッダに含め、API
リクエストを送信する。
■躓いたことでのきづき
IDトークンが付与されていないリクエストを送信し、認証エラーとなることを確認できたこと。
67


# Page. 68

![Page Image](https://bcdn.docswell.com/page/47ZLDGDLJ3.jpg)

5-2．躓いたところ
検証2
■事象
SSOでサインインをするためにアクセスすると、エラーになりログインページが表示されなかった。
■原因と解決策
Cognitoのログイン画面(Managed Login)の設定
を行っていなかった。
■躓いたことでの気づき
CognitoのUI画面は単なるログイン画面ではなく、
SSO応答を処理する必須のコンテンツであること。
68


# Page. 69

![Page Image](https://bcdn.docswell.com/page/YJ6W1Y1MJV.jpg)

5-2．躓いたところ
検証3
■事象
Managed Loginで設定したパラメータを、AWS CLIでエクスポートをしても空のJSONしか
出力することができなかった。
■原因と解決策
コマンド実行に必要なパラメータが不足していた。AWSドキュメントを確認し、オプションを
つけての挙動をひとつずつ確認することで解消した。
■躓いたことでの気付き
AWS CLIでの作業時には、リソースの対象箇所を指定するための仕様理解が必要になる。
69


# Page. 70

![Page Image](https://bcdn.docswell.com/page/GJ5M4G4QJ4.jpg)

6．参考


# Page. 71

![Page Image](https://bcdn.docswell.com/page/9E29VYVW7R.jpg)

6‐1．用語1
71
No.
項目
説明
１
Cognito
Webサイトやアプリでユーザのサインアップ（登録）やサインイン（ログイン）の機能を簡単に追加できる
サービス。
２
SAML
異なるサービス間で認証情報を安全にやり取りするためのXMLベースの標準プロトコル。主に企業などのエン
タープライズ環境でのシングルサインオン (SSO)を実現するために使われる。Cognito User Poolsは、この
SAMLプロトコルを利用して、企業のIDプロバイダ（IdP）と連携することができる。
３
JWT
情報を安全にやり取りするためのコンパクトで自己完結型のオープン標準。
主にユーザ認証情報をクライアントとサーバー間で安全にやり取りするために使われる。
４
Cognito IdP
(Cognito User Pools)
AWSが提供するユーザ認証サービス。ユーザのIDやパスワードを安全に保管し、認証に成功するとJSON
Web Tokens (JWTs)を発行する。ユーザの身元を証明するプロバイダーとして機能する。
５
Cognito Authorizer
API GatewayでAPIを呼び出す際に、ユーザがログインしているか、アクセス権があるかを確認するための
仕組み。これを使うことで、ログインしていないユーザからのアクセスをブロックできる。
６
API Gateway
Webサイトやアプリから送られてくるリクエスト（「この情報を取得したい」といった命令）を受け取り、
適切なサービス（Lambdaなど）に振り分ける「玄関」のような役割を果たすサービス。
７
REST API
APIの一種で、インターネット上で情報をやり取りするためのルールや方法を定めたもの。
８
Lambda
サーバーを管理することなく、プログラムコードを実行できるサービス。
今検証ではCognitoで認証するシステムとして使用した。
９
エンドポイント
APIが提供する機能にアクセスするためのURLのこと。例えば、「ユーザ情報を取得する」という機能が
あれば、それにアクセスするための専用のURLがエンドポイントとなる。


# Page. 72

![Page Image](https://bcdn.docswell.com/page/D7Y43G39EM.jpg)

6‐1．用語2
72
No.
項目
説明
１
アイデンティティプロバイダー(IdP)
ユーザの認証情報を管理し、他のサービスに対してユーザの身元を証明する役割を持つシステム。
２
Entra ID
Microsoft Entra ID(旧Azure Active Directory)は、Microsoftが提供するクラウドベースのアイデンティテ
ィ・アクセス管理サービス
３
Managed Login
Amazon Cognitoでカスタマイズできる項目のひとつであり、ログイン画面の内容を任意にカスタマイズする
ことができる。
４
ブランディングデザイナー
Amazon CognitoのManaged Loginを設定するWeb GUI画面のこと。
５
フォーム
ログイン画面で配置する入力欄、説明、およびボタンをまとめた入力エリア一式を指す。
６
AWS WAF
不正なウェブアクセスからアプリケーションを保護することができる。本検証ではCognitoを保護対象として
設定を行った。
７
ルール
WAFで設定する、アクセスを検査するための条件と、合致した場合の処理を定義したもの。
８
アクション
ルールに合致したリクエストに対して行う処理内容を設定する。「ALLOW」「BLOCK」「COUNT」
「CAPTCHA および Challenge」のいずれかを選択する。
９
ステートメント
IPアドレスやリクエスト内容など、どのようなアクセスを検査するかの条件を定義する。
10
IPセット
ルールで利用する、許可または拒否したいIPアドレスをまとめたもの。
11
Managed Rule Group
AWSが既知の脅威に対応するため予め用意されているルール群を指す。


# Page. 73

![Page Image](https://bcdn.docswell.com/page/VENYVGVDJ8.jpg)

6‐2．参考サイト1
73
No.
項目
URL
１
AWS シンプルアイコン - AWS アーキテクチャーセンター
| AWS
https://aws.amazon.com/jp/architecture/icons/
２
Azure アイコン - Azure Architecture Center | Microsoft
Learn
https://learn.microsoft.com/ja-jp/azure/architecture/icons/
３
API Gateway + LambdaでREST API開発について
http://qiita.com/tamura_CD/items/46ba8a2f3bfd5484843f
４
Cognitoをオーソライザーとして設定および
API Gateway経由でLambda関数へのアクセスについて
https://techblog.asia-quest.jp/202503/amazon-cognitoauthorizer-to-control-access-to-amazon-api-gateway
５
API Gateway で REST API へのアクセスを制御および管理
する
https://docs.aws.amazon.com/ja_jp/apigateway/latest/develo
perguide/apigateway-control-access-to-api.html


# Page. 74

![Page Image](https://bcdn.docswell.com/page/Y79P6W68E3.jpg)

6‐2．参考サイト2
74
No.
項目
URL
１
AWS CognitoとMicrosoft Entra IDでSSO実践入門
https://qiita.com/nisim/items/43c33aaa436269d46aaa
２
Amazon CognitoとAzure AD B2Cを利用したシングル
サインオン
https://qiita.com/mugitan/items/879928220c276d2d164b
３
ホストされた UI (クラシック) ブランドをカスタマイズ
する
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerg
uide/hosted-ui-classic-branding.html
４
[アップデート] Amazon Cognito で「Managed Login」
機能が導入され、ログインメニューのブランディングのカ
スタマイズが可能となりました
https://dev.classmethod.jp/articles/amazon-cognitomanaged-login/
５
Amazon Cognito の Hosted UI をカスタマイズしてみた
https://dev.classmethod.jp/articles/cognito-hostedui-custom/
６
[アップデート] Amazon Cognito がManaged Loginに
AWS WAF サポートを導入
https://zenn.dev/mn87/articles/11505893c12dec
７
CloudFormationでAWS WAFを構築してみた(2022年1月
版)
https://dev.classmethod.jp/articles/cfn-create-waf-log-2021/
８
AWS WAF ルール
https://docs.aws.amazon.com/ja_jp/waf/latest/developerguid
e/waf-rules.html


# Page. 75

![Page Image](https://bcdn.docswell.com/page/G78DZNZZ7D.jpg)

ありがとうございました。


