こんにちは!
Amplify で開発を行う際に、ユーザープールの外部サインインへ「カスタム IDP」を追加したくなる時が多々あります。
現在の対話コンソールの対応状況と実現方法を見ていきます。
結論現状、対話コンソールでの OIDC の追加は対応がされていません。(SAML プロバイダーも同様)
弊社の CTO もコメントしていますが、Issueを見てみると新たなプルリクエストが作成されており、今後対応が期待されます。
では、現状どのように対応すれば良いでのしょうか?
Amplify の対話コンソールを通じての Cognito User Pools への任意 OIDC プロバイダ追加は、現在対応されていません。
現時点での解決策として、ユーザープールへの OIDC ID プロバイダーの追加 – Amazon Cognitoを参照し、amplify/backend/auth 配下の AWS Cloud Formation テンプレートを編集、任意の OIDC プロバイダを追加する方法があります。
また、追加した IDP の呼び出し方は、CustomProviderSignInメソッドで IDP 名の文字列を指定し実行です。これにより、Cognito User Pools に設定された IDP プロバイダ経由の認証が可能になります。
以前にわたし達は上記のクラウドフォーメーション編集で対応した経験がありますが、結構面倒くさかった記憶があります。
そこで、もう1つの方法も紹介しておきます。
最も手軽で危険な方法です。
危険というのは、amplify auth update で何かしらを修正すると上書きできてしまう可能性を孕むからです。
ただ、クライアントワークではそうも言っていられない状況もあるかと察しますので、一応やり方を紹介しておきます。LINE を追加するケースを紹介します。
OpenIDConnect プロバイダーのLINEを作成します。
事前に LINE アプリを作成し、チャンネル ID とチャンネルシークレットを取得しておいてください。
プロバイダー名を Line(任意の名前でOK)と入力し、「oidc エンドポイントの表示」をクリックします。
各種 OpenIDConnect のエンドポイントを入力します。
認証エンドポイント | https://access.line.me/oauth2/v2.1/authorize |
トークンエンドポイント | https://api.line.me/oauth2/v2.1/token |
ユーザー情報エンドポイント | https://api.line.me/v2/profile |
Jwks uri | https://access.line.me |
アプリクライアントへ、Line を追加します。
これでインフラ面は終わりです。
あとは、CustomProviderSignInメソッドで呼び出してください。
Amplify が非対応というよりかは、Cognito が幅広い IDP には非協力的ということですね。ここ数年、Cognito は外部サインインで指定可能な IDP が徐々に増えてきているので今後期待です。(アメリカ本国で利用されているサービスが優先度高めで実装されているような雰囲気があります)
サーバーレス開発については、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎