Amazon Cognito Hosted UI のURLに独自ドメインを利用する場合の注意点

記事タイトルとURLをコピーする

こんにちは、クラウドインテグレーション2部 技術1課 宮形 です。

Amazon Cognito (以下 Cognito)の導入で、Cognito Hosted UI にて独自ドメインを利用する場合のハマりポイントに遭遇したので、本BLOGにて紹介させていただきます。

前提環境とやりたい事

作りたい環境の概略図は下記になります。AWS の ALB と Cognito で作る、お手軽な多要素認証機能です。

この環境については別BLOGとして紹介しておりますので、詳細はこちらをご参照ください。

blog.serverworks.co.jp

この構成では、ALB の FQDN へアクセスすると Cognito の サインイン画面 (Hosted UI) へリダイレクトされるのですが、そのリダイレクト先のURLは https://(任意の名前).auth.(リージョン名).amazoncognito.com/xxx... と、AWSが用意するサブドメインとなります。

このURLを独自ドメインへ変更することが出来ます。たとえば https://auth.miyagata.abc という具合です。独自ドメインのDNSサーバーは、下記どちらも利用できます。私は後者の 2. で行いました。

  1. Amazon Route 53 パブリックホストゾーン の DNSサーバー
  2. 他ベンダーや自前の DNSサーバー

ハマってしまったこと

下記のような FQDN の構成にしようとしたのですが、Cognito の登録でエラーとなりました。

AWSリソース FQDN
ALB www.miyagata.abc
Cognito auth.miyagata.abc

エラーメッセージは下記となります。

Custom domain is not a valid subdomain: Was not able to resolve the root domain, please ensure an A record exists for the root domain.

対処方法

AWS公式ドキュメントに下記のような記載があります。こちらが原因でした。 ホストされた UI への独自のドメインの使用 - Amazon Cognito

所有するウェブドメイン。そのルートには、 DNS に有効な A レコード が必要です。例えば、カスタムドメインが、auth.example.com の場合、example.com を IP アドレスに解決できる必要があります。詳細については、「ドメイン名」を参照してください。

auth.miyagata.abc のルートは miyagata.abc になりますが、私の環境では何も DNSレコードがありませんでした。

特に見せたい Webサイトも無いので、とりあえず下記のように設定しました。AWSのドキュメントには「example.com を IP アドレスに解決できる必要があります」とあるので、名前解決のみ行えればよいだろうと考えました。

DNSレコード タイプ
miyagata.abc A 127.0.0.1

127.0.0.1 とは、ループバックアドレスになるので自分自身という意味になります。仮に miyagata.abc 宛てにアクセスがあっても、クライアントはどこにも通信することはありません。将来的に miyagata.abc の FQDN を使った Webサイトを追加する場合は、適宜 Aレコードを変更すればよいです。 結果、無事エラーを解決できて Cognito に独自ドメインを設定できました。

ただ、この状態では「ドメインのステータス:CREATING」であり、まだ利用できません。 画面に表示された「エイリアスターゲット」を値として、CNAMEレコードを追加登録します。

DNSレコード タイプ
auth.miyagata.abc CNAME 表示された値.cloudfront.net

しばらく待つと、無事「ドメインのステータス:ACTIVE」となり、Cognito Hosted UI の URL を独自ドメインにすることができました。

ここでの疑問

AWS公式ドキュメントでは ルートは「Aレコード」とありましたが、たとえば下記のようにサブドメイン化して既に CNAMEレコードが設定されているケースもあると思われます。ルートが CNAME でも Cognito は問題ないのでしょうか?

DNSレコード タイプ
sub.miyagata.abc CNAME ALBのDNSエンドポイント名 etc

そこで、下記のような構成が可能かも検証しました。

AWSリソース FQDN
ALB sub.miyagata.abc
Cognito auth.sub.miyagata.abc

結果、無事設定して利用することができました。

まとめ

新規ドメイン環境で構築する場合はトライ&エラーでも設定できますが、すでに存在している運用中のドメインにおいての DNSレコード設定は既存環境に影響が出ないよう慎重に行う必要があります。

今回のトラブルシュートによって Cognito Hosted UI で独自ドメインを利用する際の注意点を抑えることができてよかったです。

本BLOGの内容が、皆様の課題解決につながれば幸いです。

宮形純平(執筆記事の一覧)

クラウドインテグレーション部 技術1課

好きなお酒は缶チューハイと本格焼酎