最新のAWS AmplifyOIDC Providerの追加方法はこれ!Line、Auth0などの外部認証プロバイダーの追加をAmplifyで対応

最新のAWS AmplifyOIDC Providerの追加方法はこれ!Line、Auth0などの外部認証プロバイダーの追加をAmplifyで対応

こんにちは!

Amplify で開発を行う際に、ユーザープールの外部サインインへ「カスタム IDP」を追加したくなる時が多々あります。

現在の対話コンソールの対応状況と実現方法を見ていきます。

対話コンソールでは対応していません

結論現状、対話コンソールでの OIDC の追加は対応がされていません。(SAML プロバイダーも同様)

弊社の CTO もコメントしていますが、Issueを見てみると新たなプルリクエストが作成されており、今後対応が期待されます。

では、現状どのように対応すれば良いでのしょうか?

クラウドフォーメーションへ追記して amplify push!

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 の自動化を捨てる

最も手軽で危険な方法です。

危険というのは、amplify auth update で何かしらを修正すると上書きできてしまう可能性を孕むからです。

ただ、クライアントワークではそうも言っていられない状況もあるかと察しますので、一応やり方を紹介しておきます。LINE を追加するケースを紹介します。

ユーザープールへ ID プロバイダーを追加

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 urihttps://access.line.me

アプリクライアントへ、Line を追加します。

これでインフラ面は終わりです。

あとは、CustomProviderSignInメソッドで呼び出してください。

まとめ

Amplify が非対応というよりかは、Cognito が幅広い IDP には非協力的ということですね。ここ数年、Cognito は外部サインインで指定可能な IDP が徐々に増えてきているので今後期待です。(アメリカ本国で利用されているサービスが優先度高めで実装されているような雰囲気があります)

サーバーレス開発については、お気軽にお問い合わせください。