結論から言うと、管理コンソールから手動でIDP追加は可能だが、Amplify CLIで自動的には追加はできないようだ。対応方法をのせておく。

amplify/backend/auth配下のAWS CloudFormationテンプレートを編集すれば行けるけど非推奨

いけましたが、amplify update authやamplify env addした場合に設定が消えます。(env addの場合は消えるというよりかは反映されななかった)

なので、私は割り切って手動で管理コンソールで構築する方を選択しました。

管理コンソールにて手動構築する方法

大まかな流れはこれ。今回はAuth0をOIDCで追加した。(SAML認証でもできるが何となくOIDCにしてみた)

  1. Auth0へSignUpしOIDCの設定を実施
  2. amplify add auth/amplify update authでOAuth関連の設定を入れる(コールバックURLやドメイン名)
  3. Amplifyで生成したCognitoのユーザープールへアクセスし、外部サインインプロバイダーのOIDCへ直接Auth0を追加
  4. AmplifyのfederatedSignIn関数へAuth0を指定しフェデレーションサインインを設定

redirect_mismatchミスマッチエラーが出た場合の対処

ホストUIから起動した場合は正常に行くのに、フロントエンドからCognitoへアクセスした場合にredirect_mismatchエラーで画面が進まない現象について、これはまずAmplifyの不具合だそうでした。

原因は、aws_exports.jsのoauthプロパティの箇所。

"oauth": {
  ...
  "redirectSignIn": "http://localhost:3000/thankyou/, http://xxxx:3000/thankyou/, http://bbbb:3000/thankyou/",
  "redirectSignOut": "http://localhost:3000/, https://example:3000/ ",
  ...
}

どうやら、カンマ区切りの文字列をそのままURLパラメーターとしてCognitoへリクエストしてしまうらしい。
Cognitoのアプリクライアントの設定には、確かにカンマ区切りで入っているがCognitoのリクエストの際に送るのはあくまでも単一のURLだ。(とんでもない不具合ですね)

調査結果、Issueが開かれており現在は非対応なようでした。
Allowing multiple redirectSignIn/redirectSignOut urls breaks federated auth
https://github.com/aws-amplify/amplify-cli/issues/2792

私は独自ですが下記のように実装を行って回避しました。

環境:Nuxtjs 2系

src/plugins/amplify.js

import Amplify, {Auth} from 'aws-amplify';
import awsconfig from '../aws-exports';
import _ from 'lodash'

// 実行中のURLを送信するようにしました(事前にコールバックURLとして追加する必要があります)
_.assign(awsconfig.oauth, {
  redirectSignIn: window.location.protocol + '//' + window.location.host + "/thankyou/",
  redirectSignOut: window.location.protocol + '//' + window.location.host + "/"
})

Amplify.configure(awsconfig)

nuxt.config.js

 plugins: [
    ...
    {src: '@/plugins/amplify.js', mode: 'client'},
    ...
  ],

そして最後に、リダイレクトURLを追加しておきます。(私はローカル環境とリモート、全環境を追加しています)

amplify update auth
...