結論

  • Twitterが提供する認証に関する機能はOAuth2.0しか存在しない
  • OpenIDConnect規格は対応しない(その他SAMLなども非対応)
  • つまり認証ではなく認可のみ提供しているのでCognitoユーザープールへ接続不可(厳密いうとTwitter独自で認証的な機能を提供している様子)

でもどうしても実現したい!!

解決策1 Identity Pool使用

Identity PoolへTwitterを追加して、ユーザープールを介さない認証を行えばいけそうです。

しかしこの場合、IAMロールが曲者で、Cogniroのユーザーグループなどを識別し自動的に付与している場合はそのロールをTwitter認証時に手動で当てないといけない。(Amplifyなどでユーザープールを介して認証をしている場合はほぼ詰んでいる)

解決策2 Auth0使用

Auth0→Cognitoで認証しトークン発行させれば、ユーザーグループを介して認証を行うことが可能なのでユーザーグループなどの情報を用いることができる。アプリケーションで独自にロールを自動的に生成している場合に有効だ。

しかし、Auth0の欠点でもあるがAuth0へ一度遷移してしまうので、UXを見直さないといけない。SIgnUp、SIgnInボタンをクリックした際はAuth0へ飛ばす的な施策を講じないといけない。

Auth0 Official