JINSテックブログ
🆔

Auth0新機能のForms触ってみた

2024/12/08に公開

この投稿は、2024年JINSのアドベントカレンダー8日目の記事です。

JINSのfutonkimochiiです。本格的に布団が気持ちいい時期がやってきました。

今回は業務でAuth0に触れる機会があったので、Auth0の簡単な説明と、新機能であるFormsを触った感想を共有します。

Auth0の概要

Auth0はIDaaS製品(*)の一つですが、実は正しい名前はOkta CIC (Okta Customer Identity Cloud)です。

  • IDaaSはXaaSの一つ。ID管理をサーバーレスで行ってくれるサービスです。

もともとはAuth0社のAuth0という製品でしたが、数年前にOktaによって買収され、この名前になったそうです。

↑ Okta社が以前から提供しているID管理サービスがWorkforce Identity Cloudで、右側については以下の説明がありました。Auth0 = CICというよりはAuth0 \subset CICということのようです。

“Okta Customer Identity Cloud, powered by Auth0” is our flagship CIAM offering. Its icon is an evolution of the Auth0 logo and alludes to the way you can bring together amazing experiences that are personalized to the individual, all while protecting their Identity. It carries the Okta brand promise of enterprise-level scale, support, and expertise.
“Auth0 by Okta” is the technology that powers Customer Identity Cloud. Developers will continue to see this name in the code and APIs, as well as developer resources and tooling. We use the same icon as Customer Identity Cloud.

引用元:Branding Updates

「Okta Customer Identity Cloud, powered by Auth0」は、当社の主要なCIAM(顧客アイデンティティおよびアクセス管理)製品です。そのアイコンはAuth0のロゴを進化させたデザインで、個々のユーザーにパーソナライズされた素晴らしい体験を提供しながら、そのアイデンティティを保護する方法を象徴しています。この製品は、企業規模のスケール、サポート、専門知識を提供するというOktaのブランドの約束を反映しています。
「Auth0 by Okta」は、Customer Identity Cloudを支える技術です。開発者は、コードやAPI、開発者向けリソースやツールでもこの名前を目にすることができます。Customer Identity Cloudと同じアイコンを使用しています。

翻訳:ChatGPT

とはいえドキュメントでも普通にAuth0と書かれていますし、この記事でもAuth0と呼ぶことにします..

Auth0のよく言及される特長は以下だと思います。ほかのIDaaSでの開発経験は無いので比較はできませんが、個人的にはおおむね同意できるところです。

  • スケーラビリティ
    ほかのIDaaSと比べて大規模なユーザー数に耐えうるスケーラビリティがあるそうです。(まだ実感できてはいませんが..)

  • APIやSDKが豊富で開発しやすい
    GUIでの設定もありますが、SDKやAPIは使いやすいと思います。Documentationやコミュニティの記事も豊富なので、困ったことも調べやすいと感じました。

  • 認証方法の柔軟性・新機能の充実
    パスキーなどの新しい認証方法にも対応していたり、Actionsや本記事主題のFormsといった個性的な新機能が多いのでカスタマイズ性が高いと感じました。

Actionsとは

Actionsとは認証認可にかかわるフロー中に開発者が作成した処理をトリガーする機能です。

例えばPost-Loginというトリガーだと、以下の図のようにユーザーがログインした後Actionがトリガーされます。その後トークンが発行され、元のサービスに戻ります。

処理の挿入はGUIで行えます。以下の例ではアクセス制御(特定の場所・時間・ロールの人のログインを拒否するなど)、トークン加工(カスタムクレームの追加など)を行っていることがわかると思います。

またサードパーティ製のActionもいろいろあるようです。特殊な認証やsms送信がある程度簡単にできそうですね。

またこのActionsの違った使い方として、自サービスへリダイレクトする処理を記述することで一度任意の画面へ遷移させ、任意の処理を行ったのちAuth0のログインフローに戻す、ということもできます。

ユースケースとしては、ログインしたユーザーに利用規約に同意させる、会員登録させる、などがありますね。

新機能Formsとは

やっと本題ですが、Formsは認証認可にかかわるフローにおいて開発者が作成した画面を含む処理をトリガーする機能です。Actionsと画面がセットになったもの、ということです。

実際にFormsを開発するGUI環境が下図です。

画面のベースとなるstep、ユーザーの入力で分岐させるためのrouter、ユーザーの入力に伴うサーバーサイドの処理であるflowを組み合わせて、画面入力とその裏の処理を自由に書ける、ということですね。


ユーザーから見たForm

従来はこういった実装は開発者が自分たちで0から作り、Actionsを使って飛ばしてあげる必要があったのですが、Formsによりそれが不要になりました。

触って分かった良さ・難しさ

2024年9月にGAになったばかりのFormsですが、しばらく触ってみて感じた良いところ、難しいところを紹介します。

良いところ

  • 素早く試せる、学習コストが低い
    GUIぽちぽちなので直感的で、すぐ試せます。このあたりにFormsを使ったUsecasesがあるので、簡単な実装であればjavascriptを全く書けなくても迷うことは少ないと思います。

  • サードパーティとの連携が豊富
    flowで行う処理は自分でもある程度自由に書けますが、サードパーティが提供する機能を呼び出すこともできます。(e.g. sms、メール通知、ノーコード系の各種ツールなどなど)




    すでに使っている製品があればかなり便利そう

難しいところ

  • 再起処理ができない(2024年12月現在)
    いきなり具体的ですが、ユーザーの入力によっては前のstepに戻したい、ということがあってもFormsでは実現できません。(参照:Is previous button the only way to get back to certain step in the form steps?)
    なのであまり複雑な処理には向かないですね。

  • バリデーションがほぼ不可能(2024年12月現在)
    ユーザー入力にはバリデーションが不可欠かと思いますが、Formsではrequiredを指定できるくらいで、本格的なバリデーションはバックエンド側で行う必要があります。ケースによっては致命的かもしれないです。

まだGAになったばかりの機能なので、もちろん今後に期待したいところです。

まとめ

今回はAuth0の新機能Formsの紹介をしました。Auth0はquickstartsから無料でだれでも試すことができるので、興味のある方は触れてみてください。

JINSテックブログ
JINSテックブログ

Discussion